一个简单的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;

}

}

}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值