perl语言求助 请问下面的perl是什么意思啊? 最好能每行都给翻译下,我准备改写成python的

#!/usr/bin/perlusestrict;our(@input,%files,);foreach(@ARGV){push(@input,@ARGV);}die"U... #!/usr/bin/perl

use strict;

our (@input,%files,
);

foreach (@ARGV)
{
push(@input,@ARGV);
}

die "Usage: $0 <xxxxx.cmd> ...\n" unless @input;

foreach my $cmd (@input)
{
open(CMD,$cmd) || die "Cannot open $cmd\n";
while (<CMD>)
{
chop;
next unless /-o\s/;
$_=$';
s/\s.*$//;
s/\.o$/.D/;
my $depFile=$_;
open (D,$depFile);
my $dir=<D>;
chop($dir);
$dir=~s/\#//;
while (<D>)
{
chop;
s/\\$//;
s/.*:\s//;
foreach my $file (split)
{
$file=$dir."/".$file unless $file=~m/^\//;
$files{$file}++;
}
}
}
}

foreach my $file (keys %files)
{
print $file,"\n";
}
展开
 我来答
longge761001654b3
2016-07-05
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
#!/usr/bin/perl

use strict;

our (@input,%files, # 定义一个包全局数组和哈希
);

foreach (@ARGV) # 循环输入参数
{
push(@input,@ARGV); # 将输入参数push到@input
}

die "Usage: $0 <xxxxx.cmd> ...\n" unless @input; # 如果@input为空,则退出并显示错误信息

foreach my $cmd (@input) # 循环@input,并将每一项赋值给$cmd
{
open(CMD,$cmd) || die "Cannot open $cmd\n"; # 使用CMD文件句柄打开文件$cmd,如果打开失败则退出并显示错误信息
while (<CMD>) # 循环读取文件句柄,并将每一行赋值给内置变量$_
{
chop; # 删除$_的最后一个字符(应该是换行符)
next unless /-o\s/; # 如果$_不匹配/-o\s/,则跳过本次循环
$_=$'; # 上个匹配信息后的字符串赋值给$_
s/\s.*$//; # 将$_中的"\s.*$"替换成空(相当于删除)
s/\.o$/.D/; # 将$_中的".o"结尾的替换成".D"
my $depFile=$_; # 赋值
open (D,$depFile); # 使用文件句柄D打开$depFile文件
my $dir=<D>; # 读取一行数据
chop($dir); # 去除最后一个字符
$dir=~s/\#//; # 替换#号
while (<D>) # 循环读取每一行,并赋值给$_
{
chop; # 去除$_的最后一个字符
s/\\$//; # 替换
s/.*:\s//; # 替换
foreach my $file (split) # 将$_以" "(空格)拆分成数组,并循环
{
$file=$dir."/".$file unless $file=~m/^\//; # 如果$file的第一个字符不是"/",则在$file的前面添加$dir."/",PS: perl中"."(点号)用来拼接字符串
$files{$file}++; # 给哈希变量赋值,这句相当于$files{$file} = 1;
}
}
}
}

foreach my $file (keys %files) # 循环%files的key
{
print $file,"\n"; # 输出
}

如有不懂的地方继续追问
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
?>

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式