我怎样才能find在Perl中的哈希键的数量?
我如何find散列中的键的数量,比如使用$#
作为数组?
scalar keys %hash
要不就
keys %hash
如果您已经处于标量上下文中,例如my $hash_count = keys %hash
或print 'bighash' if keys %hash > 1000
。
顺便说一句, $#array
没有find元素的数量,它find最后一个索引。 scalar @array
find元素的数量。
我们也可以这样使用
my $keys = keys(%r) ; print "keys = $keys" ; 0+(keys %r)
以下将返回less于您的散列键的数量。 如果您喜欢$#array
风格的做事(或简洁),您可能会喜欢:
$#{$hash};
关键编辑:
坚持…这很有趣。 如果你想使用它作为数组引用,但是如果你在外面使用它,它是有效的。 所以如果你想访问你的散列的最后一个键,这是很有用的,只要你已经把你的键作为一个数组分配给了temp:检查一下:
%hash = ( "barney" => "dinosaur", "elmo" => "monster"); @array = sort {$a cmp $b} keys %hash; print $array[$#{$hash}]; # prints "elmo"
但不是在Perl 5.10之后:
use feature ":5.10"; my %p = (); say $#%p; # $# is no longer supported
更糟的是:
use feature ":5.10"; my %p = (a=>1, b=>2, c=>3); say $#{%p}; # -1
打印标量键%散列;
OR
$ X = keys%hash; 打印$ X;
(Keys%hash返回列表上下文中的键的值,这些键进一步变为标量上下文(当分配给标量variables时)。)
这将以简单的方式和任何大小的散列工作。
打印标量键%散列;