Perl映射 - 需要将数组映射到散列中作为arrayelement-> array_index

Gop*_* SA 16 arrays mapping perl hash

我有一个像这样的数组:

my @arr = ("Field3","Field1","Field2","Field5","Field4");
Run Code Online (Sandbox Code Playgroud)

现在我使用下面的地图,其中/ DOSOMETHING /是我正在寻找的答案.

my %hash = map {$_ => **/DOSOMETHING/** } @arr
Run Code Online (Sandbox Code Playgroud)

现在我要求哈希看起来如下所示:

Field3 => 0
Field1 => 1
Field2 => 2
Field5 => 3
Field4 => 4

有帮助吗?

unb*_*eli 24

%hash = map { $arr[$_] => $_ } 0..$#arr;

print Dumper(\%hash)
$VAR1 = {
          'Field4' => 4,
          'Field2' => 2,
          'Field5' => 3,
          'Field1' => 1,
          'Field3' => 0
        };
Run Code Online (Sandbox Code Playgroud)


Eug*_*ash 19

my %hash;
@hash{@arr} = 0..$#arr;
Run Code Online (Sandbox Code Playgroud)

  • @Zaid总有一些可爱的技巧,比如`@ $ _ {@ arr} = 0 .. $#arr for\my%hash;`,但是eugene的代码具有较小的冲击值. (4认同)
  • 遗憾的是,'%hash`必须预先声明,所以我们不能写出像我的@hash {@arr} = 0 .. $#arr;`... (3认同)