考虑一个填充的哈希:
%hash = ( ... );
Run Code Online (Sandbox Code Playgroud)
我想从哈希中检索一个值; 任何价值都可以.
我想避免
$arbitrary_value = (values %hash)[0];
Run Code Online (Sandbox Code Playgroud)
因为我真的不想创建一个键数组,只是为了获得第一个键.
有没有办法在不生成值列表的情况下执行此操作?
注意:它不需要是随机的.任何价值都可以.
有什么建议?
编辑:假设我不知道任何键.
Sin*_*nür 16
用途each:
#!/usr/bin/env perl
use strict; use warnings;
my %h = qw(a b c d e f);
my (undef, $value) = each %h;
keys %h; # reset iterator;
print "$value\n";
Run Code Online (Sandbox Code Playgroud)
正如在注释中指出的那样,特别是在void上下文中调用keys()会重置迭代器而不会产生其他开销.至少自2003年以来,这种行为一直存在,当时将信息添加到文档中以获取键和值.