Immer wenn ich einen Hash über seine Schlüssel wiederhole und dann jeden Wert drucke, erhalte ich die Warnung "Verwendung nicht initialisierter Werte in der Verkettung (.) oder Zeichenkette ...". Auch wenn der Hash im Vorfeld klar initialisiert wird. Die Ausgabe, die ich möchte, ist gedruckt, aber ich möchte immer noch wissen, warum dies zu einer Warnung führt, insbesondere wenn der Zugriff auf einen Wert direkt (außerhalb einer Schleife) ohne Warnungen funktioniert.
%Vor%Betrachten Sie den obigen Code. Ich denke Perl sieht einen Unterschied zwischen dem ersten und dem zweiten Druck. Aber warum? Warum gibt es einen Unterschied zwischen dem Abrufen des Werts eines Hash außerhalb der Schleife und dem Abrufen des Werts eines Hasens innerhalb einer Schleife?
Danke!
Die Verwendung eines Hash im Listenkontext ergibt sowohl Schlüssel als auch Werte. Daher iteriert die Zeile foreach my $key (%fruit)
über Schlüssel, Wert, Schlüssel, Wert ...
Was Sie brauchen, ist foreach my $key (keys %fruit)
.
Es sollte foreach my $key ( keys %fruits )
sein. Ich denke, das ist genau das, was Sie wirklich tun wollen.