一个简单的perl程序
? ? 下面展示一个简单的perl程序,功能是根据参数列表中提供的一个或多个文件名,以每一行为一个单位逐一读取作为路径,如果该路径是一个可执行文件,可以由此找出其所依赖的共享库,并且生成到一个汇总列表中。这样的功能可以作为应用程序打包功能(主要是处理依赖关系)的一部分。 while (<>)? ? ? ? ? ? ? ? ? //神奇的钻石操作符,读取参数列表中的所有文件内容 { chomp; if (-d $_)? ? ? ? ? ? ? //对于目录,存入目录列表中 { $dir_set{$_} =0; } else { $path_set{$_} =0; &relate($_)if -x -B $_ and (not -l $_); ? ? ? ? //对于可执行文件,遍历依赖关系 } } foreach (sort keys %path_set) { print"$_n"; } foreach (sort keys %dir_set) { print"$_/n"; } sub relate { foreach (`readelf -d $_[0]`)? ? ? ? ? ? ? ? ? ? ? ? //读取可执行文件所依赖的共享库 { if ((/Shared library: [(.*)]/)and (not exists $find_flag{$1})) { $find_flag{$1} =0 ; foreach (`find / -name $1`) ? ? ? ? ? ? ? ? //查找共享库所在的路径 { chomp; relate($_); $path_set{$_} =0; } } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |