キーでハッシュをループし、各値を出力するたびに、「連結(。)または文字列での初期化されていない値の使用...」という警告が表示されます。ハッシュは前もって明確に初期化されていますが。必要な出力が出力されますが、特に値に直接(ループの外で)アクセスすると警告なしで機能するため、なぜこれが警告になるのかを知りたいです。
#!/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";
}
上記のコードを検討してください。perlは最初の印刷と2番目の印刷の違いを見ていると思います。しかし、なぜ?ループの外側でハッシュの値を取得することと、ループの内側でhasの値を取得することに違いがあるのはなぜですか?
ありがとう!