如何在Perl中为哈希分配两个数组?

Jan*_*ane 31 perl hash

我有两行代码和两个大数组(所以不能把它写成哈希),我想用哈希连接.

例如,$array1[0]成为关键并$array2[0]成为值,依此类推$array1[150],$array2[150].

我有什么想法吗?

mar*_*ton 65

您可以在一个作业中完成:

my %hash;
@hash{@array1} = @array2;
Run Code Online (Sandbox Code Playgroud)

这是一个常见的习语.来自切片上的perldoc perldata:

如果你对为什么在哈希切片而不是'%'上使用'@'感到困惑,那就这样想吧.括号的类型(方形或卷曲)决定它是一个数组还是正在查看的哈希.另一方面,数组或散列上的前导符号('$'或'@')表示您是返回单数值(标量值)还是复数值(列表).

当我看到其中一个时,我看到拉链的心理形象......

  • Perl在[List :: MoreUtils](http://search.cpan.org/dist/List-MoreUtils)中有一个`zip`.还有[在Perl中有一个优雅的拉链来交错两个列表](http://stackoverflow.com/q/38345/8817). (8认同)

bri*_*foy 16

对于你的一般问题,马丁克莱顿有最好的答案,在Perl 5.12中也有一个有趣的新功能.您可以在阵列上使用每个,以便您可以轻松地遍历并行数组.在您使用它们之前想要操作值时,它非常有用:

 while( my( $index, $value ) = each @array1 ) {
      ...; # maybe do something to $value
      $hash{ $value } = $array2[$index];
      }
Run Code Online (Sandbox Code Playgroud)