如何在不使用临时数组的情况下访问最后一个Perl哈希键?

Zai*_*aid 4 perl hash

如何在不创建临时数组的情况下访问哈希中键的最后一个元素?

我知道哈希是无序的.但是,有一些应用程序(比如我的),我可以使用sort哈希键上的简单调用来订购我的密钥.希望我已经解释了为什么我想要这个.我承认,barney/elmo示例是一个糟糕的选择,但它确实有它的应用程序.

考虑以下:

my %hash = ( barney => 'dinosaur', elmo => 'monster' );
my @array = sort keys %hash;
print $array[$#{$hash}];
#prints "elmo"
Run Code Online (Sandbox Code Playgroud)

关于如何在不调用temp的情况下执行此操作的任何想法(在这种情况下为@array)?

fri*_*edo 11

print( (keys %hash)[-1]);
Run Code Online (Sandbox Code Playgroud)

请注意,额外的parens是防止语法混淆print的参数列表所必需的.

你也可以使用这个邪恶的技巧强制它进入标量上下文并取消额外的parens:

print ~~(keys %hash)[-1];
Run Code Online (Sandbox Code Playgroud)