加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

一个简单的perl程序

发布时间:2020-12-16 00:16:02 所属栏目:大数据 来源:网络整理
导读:? ? 下面展示一个简单的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;

}

}

}

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读