如何在Perl中找到哈希中的键数?

问题描述 投票:42回答:5

如何在散列中找到键的数量,例如使用$#作为数组?

perl hash
5个回答
72
投票
scalar keys %hash

要不就

keys %hash

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

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


2
投票

我们也可以这样使用

my $keys = keys(%r) ;
print "keys = $keys" ;

 0+(keys %r) 

0
投票

但不是在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

0
投票
print scalar keys %hash;

要么

$X = keys %hash;
print $X;

keys %hash返回列表上下文中键的值,进一步更改为标量上下文(分配给标量变量时)。


-4
投票

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

print scalar keys%hash;

© www.soinside.com 2019 - 2024. All rights reserved.