如何在不创建临时数组的情况下访问哈希中键的最后一个元素?
我知道哈希是无序的.但是,有一些应用程序(如我的),我可以使用散列键上的简单排序调用来订购我的密钥.希望我已经解释了为什么我想要这个.我承认,barney / elmo示例是一个糟糕的选择,但它确实有它的应用程序.
考虑以下:
my %hash = ( barney => 'dinosaur',elmo => 'monster' ); my @array = sort keys %hash; print $array[$#{$hash}]; #prints "elmo"
关于如何在不调用temp的情况下执行此操作的任何想法(在这种情况下为@array)?
解决方法
print( (keys %hash)[-1]);
请注意,额外的parens是防止语法与print的参数列表混淆所必需的.
你也可以使用这个邪恶的技巧强制它进入标量上下文并取消额外的parens:
print ~~(keys %hash)[-1];