我很难理解 Perl 中哈希背后的逻辑。任务是将文件加载到散列中并将值分配给使用此文件创建的键。
文件包含字母,每个字母占一行:
a
b
c
d
e
等等。 当使用 array 而不是 hash 时,逻辑很简单:将文件加载到数组中,然后使用某个计数器 ($counter++) 打印具有相应数字的每个元素。
但现在我的问题是,我如何将文件读入我的哈希,分配自动生成的值并以这样的方式对其进行排序,输出如下所示:
a:1
b:2
c:3
我尝试先创建数组,然后使用
将其链接到哈希%hash = @array
但它使我的哈希不可排序。
最佳答案
有很多方法可以解决这个问题。最直接的方法是在您阅读文件时将数据加载到哈希中。
my %hash;
while(<>)
{
chomp;
$hash{$_} = $.; #Use the line number as your autogenerated counter.
}
如果你已经有一个填充数组,你也可以执行类似的逻辑。
for (0..$#array)
{
$hash{$array[$_]} = $_;
}
不过,如果您遇到这种情况,map是更糟糕的做事方式。
%hash = map { $array[$_] => $_ } @array;
关于arrays - Perl:将文件加载到哈希中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29904287/