Arrays perl数组不正确地将值分配给索引(不断覆盖相同的索引)

Arrays perl数组不正确地将值分配给索引(不断覆盖相同的索引),arrays,perl,unix,md5,md5sum,Arrays,Perl,Unix,Md5,Md5sum,我正在将目录中的文件读入数组。从那里,我想计算数组中每个文件的md5sum,并将带有文件名的指纹存储到另一个数组中。出于某种原因,在下面的代码中,我的脚本似乎一直在覆盖第二个数组(@md5)中的相同索引,而不是将每个md5sum存储到单独的索引中。我的代码有什么问题?输出在这篇文章的底部 #!/usr/bin/perl -w @files = <*>; foreach $file (@files) { print $file . "\n"; } foreach $file (@

我正在将目录中的文件读入数组。从那里,我想计算数组中每个文件的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";
}

在第二个循环中,您使用最近的
md5sum
输出的行覆盖数组

我想到了两种可能的解决方案:

将新行推送到数组的末尾:
Push(@md5,qx“md5sum$file”)
或
将每个新的行数组存储在包含哈希或数组中:
@md5{$file}=qx“md5sum$file”)


我想你是在尝试第1个。

将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";
}
#/usr/bin/perl-w
严格使用;
@文件=;
foreach$file(@files){
打印$file。“\n”;
}
foreach$file(@files){
push(@md5,`md5sum$file`);#md5[n]具有文件[n]的总和
}
foreach$entry(@md5){
打印$entry。“\n”;
}

我会删除
$x++
-这没有使用,并且与
使用严格的
完美相冲突,谢谢。是的,x++是从一些不同的代码中遗留下来的,这些代码不起作用-deletedqx与backtick相同`
#!/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";
}