1

ここから Perl Script を学んでいます。ハッシュの作成に問題があります。コードは次のとおりです。

print "Hello World!\n";
@days = ("1", "2");
print "There are $#days days\n";
print "1 is $days[0]\n";
%months = ("a" => 1, "b" => 2, "c" => 3);
print "There are $#months keys\n";
print "a is $months[0]\n";
for $i (keys %months)
{ print "$i has value $months[$i].\n"}

現在、配列で正常に動作しています。しかし、ハッシュの場合、「-1 キーがあります」と表示されます。また、最後の印刷呼び出しの変数値については何も印刷しません。

4

3 に答える 3

3

Perl では、ハッシュ内の要素へのアクセスには、配列とは少し異なる構文が使用されます。ハッシュには中括弧を、配列には角括弧を使用します。

print "a is $months{a}\n";  # "a is 1"

And$#monthsは、'@months の最後のインデックス' の別の言い方です。あなたが本当に意味していたのは、 のキーの数を数えることでした%months:

printf "There are %d keys\n", scalar keys %months;

print代わりに主張する場合printf

print "There are $#{[keys %months]} keys\n";

(しかし、現時点であなたがなりたい場所よりも数歩進んでいるかもしれません)

于 2013-04-18T11:55:54.850 に答える