Ich verstehe nicht wirklich warum das folgende Stück Perlcode
%Vor%Gibt den folgenden Fehler aus:
%Vor% Ist das ein Fehler? Oder sollte ich etwas über die Verwendung der magischen / impliziten Variable $_
wissen?
Das while (<fh>)
-Konstrukt weist implizit der globalen Variablen $_
zu.
Dies wird in perlop
beschrieben:
Wenn und nur wenn das Eingabesymbol das einzige Ding innerhalb des ist abhängig von einer while-Anweisung (...), ist der Wert automatisch zugewiesen an die globale Variable $ _, zerstört was auch immer da war vorher. (...) Die Variable $ _ ist nicht implizit lokalisiert. Du wirst muss ein lokales $ _ setzen; vor der Schleife, wenn Sie möchten, dass dies geschieht.
Der Fehler wird ausgelöst, weil $_
anfänglich auf einen konstanten Wert ( "a"
) aliasiert ist.
Sie können dies vermeiden, indem Sie eine lexikalische Variable deklarieren:
%Vor% Ja, die while-Schleife liest in $_
, das an diesem Punkt als Alias zu einer Konstanten (der String "a") verwendet wird. Sie sollten local $_;
vor der while-Schleife verwenden oder in eine separate Variable einlesen.
Tags und Links perl