我有一个这样的数组:
my @arr = ("Field3","Field1","Field2","Field5","Field4");
我现在使用下面的 map ,其中 /DOSOMETHING/ 就是我正在寻找的答案。
my %hash = map {$_ => **/DOSOMETHING/** } @arr
现在我需要哈希表的格式如下:
Field3 => 0 Field1 => 1 Field2 => 2 Field5 => 3 Field4 => 4
有人可以帮忙吗?
我有一个这样的数组:
my @arr = ("Field3","Field1","Field2","Field5","Field4");
我现在使用下面的 map ,其中 /DOSOMETHING/ 就是我正在寻找的答案。
my %hash = map {$_ => **/DOSOMETHING/** } @arr
现在我需要哈希表的格式如下:
Field3 => 0 Field1 => 1 Field2 => 2 Field5 => 3 Field4 => 4
有人可以帮忙吗?
%hash = map { $arr[$_] => $_ } 0..$#arr;
print Dumper(\%hash)
$VAR1 = {
'Field4' => 4,
'Field2' => 2,
'Field5' => 3,
'Field1' => 1,
'Field3' => 0
};
my %hash;
@hash{@arr} = 0..$#arr;
sub get_bumper {
my $i = 0;
sub { $i++ };
}
my $bump = get_bumper; # $bump is a closure with its very own counter
map { $_ => $bump->(); } @arr;
my $i; my %hash = map { $_ => $i++ } @arr
? - Eugene Yarmasheach
来迭代其索引/值对:use 5.012;
my %hash;
while(my ($index, $value) = each @arr) {
$hash{$value} = $index;
}
这是一个非常老的问题,但我遇到了同样的问题,这是我的解决方案:
use feature ':5.10';
my @arr = ("Field3","Field1","Field2","Field5","Field4");
my %hash = map {state $i = 0; $_ => $i++} @arr;
@$_{@arr} = 0 .. $#arr for \my %hash;
,但是 Eugene 的代码更加简洁明了。 - Greg Bacon