如果我在Perl中有一个包含完整和顺序整数映射的哈希(即,从0到n的所有键都映射到某个东西,这个外面没有键),是否有一种将其转换为数组的方法?
我知道我可以迭代键/值对并将它们放在一个新的数组中,但有些东西告诉我应该有一个内置的方法来做到这一点。
解决方法
如果你的原始数据源是一个哈希:
# first find the max key value,if you don't already know it: use List::Util 'max'; my $maxkey = max keys %hash; # get all the values,in order my @array = @hash{0 .. $maxkey};
或者如果您的原始数据源是hashref:
my $maxkey = max keys %$hashref; my @array = @{$hashref}{0 .. $maxkey};
这个例子很容易测试:
my %hash; @hash{0 .. 9} = ('a' .. 'j'); # insert code from above,and then print the result... use Data::Dumper; print Dumper(\%hash); print Dumper(\@array); $VAR1 = { '6' => 'g','3' => 'd','7' => 'h','9' => 'j','2' => 'c','8' => 'i','1' => 'b','4' => 'e','0' => 'a','5' => 'f' }; $VAR1 = [ 'a','b','c','d','e','f','g','h','i','j' ];