Arrays perl数组不正确地将值分配给索引(不断覆盖相同的索引)
我正在将目录中的文件读入数组。从那里,我想计算数组中每个文件的md5sum,并将带有文件名的指纹存储到另一个数组中。出于某种原因,在下面的代码中,我的脚本似乎一直在覆盖第二个数组(@md5)中的相同索引,而不是将每个md5sum存储到单独的索引中。我的代码有什么问题?输出在这篇文章的底部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 (@
#!/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";
}