キーでハッシュをループし、各値を出力するたびに、「連結(。)または文字列...で初期化されていない値を使用する」という警告が表示されます。ハッシュは明確に初期化されていますが。私が望む出力が表示されますが、特にループには直接値にアクセスすると警告なしで動作するため、この結果が警告になる理由を知りたいと思います。Perl - キーでハッシュをループして、各値を出力すると、初期化されない警告が表示されるのはなぜですか?
#!/usr/bin/perl
use warnings;
use strict;
my %fruit =();
%fruit = ('Apple' => 'Green', 'Strawberry' => 'Red', 'Mango' => 'Yellow');
#works
print "An apple is $fruit{Apple} \n";
#gives warnings
foreach my $key (%fruit)
{
print "The color of $key is $fruit{$key} \n";
}
#also gives warnings
foreach my $key (%fruit)
{
my $value = $fruit{$key};
print "$value \n";
}
上記のコードを検討してください。私は、最初の印刷物と2番目の印刷物との間に違いがあると思います。しかし、なぜ?ループ外のハッシュの値を取得することと、ループの内部にあるハッシュの値を取り出すこととの違いは何ですか?
ありがとうございます!
ありがとうございます!これは本当にトリックでした。気づかなかった:-)。 – Gx1sptDTDa