配列に$#
を使用するなど、ハッシュ内のキーの数を調べるにはどうすればよいですか?
scalar keys %hash
あるいは単に
keys %hash
すでにスカラーコンテキストにいる場合、たとえばmy $hash_count = keys %hash
またはprint 'bighash' if keys %hash > 1000
。
ちなみに、$#array
は要素の数を見つけず、最後のインデックスを見つけます。 scalar @array
は要素の数を見つけます。
私たちもこのように使用できます
my $keys = keys(%r) ;
print "keys = $keys" ;
0+(keys %r)
print scalar keys %hash;
または
$X = keys %hash;
print $X;
keys %hash
は、スカラーコンテキストにさらに変化するリストコンテキストのキーの値を返します(スカラー変数に割り当てる場合)。
しかし、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