我怎样才能find在Perl中的哈希键的数量?

我如何find散列中的键的数量,比如使用$#作为数组?

 scalar keys %hash 

要不就

 keys %hash 

如果您已经处于标量上下文中,例如my $hash_count = keys %hashprint 'bighash' if keys %hash > 1000

顺便说一句, $#array没有find元素的数量,它find最后一个索引。 scalar @arrayfind元素的数量。

我们也可以这样使用

 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时)。)

这将以简单的方式和任何大小的散列工作。

打印标量键%散列;