web-dev-qa-db-ja.com

Perlでハッシュ内のキーの数を見つけるにはどうすればよいですか?

配列に$#を使用するなど、ハッシュ内のキーの数を調べるにはどうすればよいですか?

42
joe
scalar keys %hash

あるいは単に

keys %hash

すでにスカラーコンテキストにいる場合、たとえばmy $hash_count = keys %hashまたはprint 'bighash' if keys %hash > 1000

ちなみに、$#arrayは要素の数を見つけず、最後のインデックスを見つけます。 scalar @arrayは要素の数を見つけます。

72
chaos

私たちもこのように使用できます

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

 0+(keys %r) 
2
joe
print scalar keys %hash;

または

$X = keys %hash;
print $X;

keys %hashは、スカラーコンテキストにさらに変化するリストコンテキストのキーの値を返します(スカラー変数に割り当てる場合)。

0
Sandeep_black

しかし、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
user846969