Perl - 在不使用其他变量的情况下将哈希转换为数组

时间:2013-01-13 12:23:16

标签: arrays perl hash casting

是否可以在perl中将哈希值转换为数组但不使用其他变量? 这按预期工作,但使用另一个变量(@arr):

perl -wlae '%hash=(name=>"linus", forename=>"torvalds "); @arr=%hash; print "@arr"'

我尝试过这些但是没有用过(BTW他们做了什么?):

perl -wlae '%hash=(name=>"linus", forename=>"torvalds "); print "@hash"'
perl -wlae '%hash=(name=>"linus", forename=>"torvalds "); print "%@hash"'
perl -wlae '%hash=(name=>"linus", forename=>"torvalds "); print "@%hash"'

1 个答案:

答案 0 :(得分:-2)

perl -wlae '%hash=(name=>"linus", forename=>"torvalds "); print (%hash);'

将表达式放在括号中会在列表上下文中对其进行求值,就像分配给列表变量一样。

print的情况下,这种转换是不必要的,因为它对数组和散列使用列表上下文。但是如果你想用散列做其他数组风格的东西,你可以使用它,例如

$first = (%hash)[0];
echo $first;