0

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

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

我已经尝试过这些但都没有奏效(顺便说一句,他们做了什么?):

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"'
4

1 回答 1

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

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

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

$first = (%hash)[0];
echo $first;
于 2013-01-13T12:49:37.890 回答