while (@array) Effekte für Perl

8
%Vor%

Weiß jemand, was das genau tun würde? Wir hatten gerade eine Diskussion darüber, da es sich bei dem Code normalerweise um etwas wie:

handelt %Vor%     
Psyllex 06.08.2012, 18:03
quelle

3 Antworten

6

<@thisArray> funktioniert als glob(@thisArray) . Es gibt also eine Liste aller Dateien, die den Mitgliedern des Arrays entsprechen.

Wenn ein Element des Arrays nicht mit einer Datei übereinstimmt, wird das Element selbst zurückgegeben.

    
pavel 06.08.2012, 18:14
quelle
10

Er durchläuft Dateinamen, die mit Mustern in @thisArray übereinstimmen.

Das Ergebnis von perl -MO=Deparse -e '1 while(<@thisArray>)' zeigt, dass <> in glob konvertiert wurde:

%Vor%

Von glob manuell:

  

Im skalaren Kontext durchläuft glob solche Dateinamenerweiterungen und gibt undef zurück, wenn die Liste erschöpft ist.

Der Standardwert für $" ist space, daher werden mehrere Muster aus @thisArray zu einer einzelnen Zeichenfolge zusammengefügt und dann durch Leerzeichen innerhalb von glob :

zurückgespalten
  

Beachten Sie, dass glob seine Argumente in Whitespaces aufteilt und jedes Segment als separates Muster behandelt.

    
Ivan Nevostruev 06.08.2012 18:14
quelle
5

Siehe perlop :

  

Wenn in den spitzen Klammern steht, ist weder ein Dateihandle noch ein   einfache skalare Variable, die einen Dateihandle-Namen, Typeglob oder   typeglob Referenz, wird es als ein Dateinamenmuster interpretiert werden   globbed

    
choroba 06.08.2012 18:19
quelle

Tags und Links