Ilekroć pętlę przez hasz przez jego klucze, a następnie drukowanie każdej wartości, otrzymuję "wykorzystanie niezainicjowanej wartości w ostrzeżenie konkatenacji (.) Lub ciąg ...". Mimo że skrót jest wyraźnie inicjowany z góry. Wydruk, którego chcę, jest drukowany, ale nadal chciałbym wiedzieć, dlaczego powoduje to ostrzeżenie, zwłaszcza że dostęp do wartości bezpośrednio (poza pętlą) działa bez ostrzeżeń.Perl - Dlaczego zapętlenie hashu za pomocą kluczy, a następnie wydrukowanie każdej wartości powoduje niezainicjowane ostrzeżenie?
#!/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";
}
Należy wziąć pod uwagę powyższy kod. Przypuszczam, że Perl dostrzega różnicę między pierwszym nadrukiem a drugim nadrukiem. Ale dlaczego? Dlaczego istnieje różnica między pobieraniem wartości skrótu poza pętlą a uzyskiwaniem wartości wewnątrz pętli?
Dzięki!
Dzięki! To naprawdę załatwiło sprawę. Nie zdawałem sobie sprawy :-). – Gx1sptDTDa