我正在将目录的文件读取到数组中。从那里,我想从数组中计算每个文件的md5sum,并将带有文件名的指纹存储到另一个数组中。出于某种原因,使用下面的代码,我的脚本似乎一直在我的第二个数组(@md5)中覆盖相同的索引,而不是将每个md5sum存储到单独的索引中。我的代码有什么问题?输出在这篇文章的底部。
#!/usr/bin/perl -w
@files = <*>;
foreach $file (@files) {
print $file . "\n";
}
foreach $file (@files) {
@md5 = `md5sum $file`;
$x++;
}
foreach $entry (@md5) {
print $entry . "\n";
}
输出
./mymd5.pl
ddiff.pl
mymd5.pl
mymd5.pl.save
mymd5.pl.save.1
plgrep.pl
d41d8cd98f00b204e9800998ecf8427e plgrep.pl
发布于 2013-10-18 18:21:10
按与文件数组相同的顺序将md5和推到数组上,
#!/usr/bin/perl -w
use strict;
@files = <*>;
foreach $file (@files) {
print $file . "\n";
}
foreach $file (@files) {
push(@md5,`md5sum $file`); #md5[n] has sum for file[n]
}
foreach $entry (@md5) {
print $entry . "\n";
}
发布于 2013-10-18 18:20:08
在第二个循环中,您将用最近的md5sum
输出的行覆盖数组。
想到了两个可能的解决办法:
将新行推送到数组的末尾:push(@md5, qx"md5sum $file");
或在包含散列或数组:@md5{$file} = qx"md5sum $file" );
的数组中存储每个新的行数组
我想你是在争取第一天的比赛。
https://stackoverflow.com/questions/19461580
复制相似问题