Perl: Unerwartetes $ _-Verhalten

7
%Vor%

Ich habe erwartet, dass diese Schleife jede Zeile der Datei liest, bis der erste datetime-Wert gelesen wird.

Stattdessen wird $ _ unitialisiert und ich bekomme eine Ladung von "nicht initialisierten Wert $ _ in Musterübereinstimmung" (und Druck) Nachrichten.

Irgendwelche Ideen, warum das passiert?

A

    
Richard 27.03.2012, 12:06
quelle

1 Antwort

20

$_ wird nur gesetzt, wenn Sie das Formular while (<$fh>) form verwenden, das Sie nicht sind.

Schau dir das an:

%Vor%

Von den perlop Dokumenten:

  

Normalerweise müssen Sie den zurückgegebenen Wert einer Variablen zuweisen, aber es gibt eine Situation, in der eine automatische Zuweisung stattfindet. Wenn und nur wenn das Eingabesymbol das einzige Ding innerhalb der bedingten einer while-Anweisung ist (selbst wenn es als for (;;) -Schleife getarnt ist), ist der Wert automatisch zugewiesen zu der globalen Variable $ _ und zerstört, was vorher dort war.

    
Mat 27.03.2012, 12:13
quelle

Tags und Links