2009-06-11 8 views
1

Was bewirkt dieser Ausdruck in der Perl-Programmierung?

$variable =~ /^\s*$/; 

Antwort

16

das ist eine Linie Start (^) auf der Suche, gefolgt von null oder mehr Leerzeichen (\ s *) Zeichen, gefolgt von einem Zeilenende ($).

Es ist im Wesentlichen auf der Suche nach leeren/leeren Zeilen.

Ich würde erwarten, dass der Ausdruck in etwas verwendet werden, wie:

if ($v =~ /^\s*$/) { 
    # found a blank line 
} 

, um den Scheck und eine folgende Aktion auszuführen.

+0

Die Phrase "eine beliebige Zahl" ist ein wenig vage, würde ich sagen, null oder mehr Leerzeichen statt. –

+0

Ich habe bearbeitet, um ein wenig expliziter zu sein –

1

Nichts, da Sie das Ergebnis dieser Operation keiner Variablen zuweisen, und da es keine Nebenwirkungen hat, auf die Sie wahrscheinlich testen werden.

Wenn Sie jedoch die

if ($variable =~ /^\s*$/) 
{ 
    print "something"; 
} 

Sie wäre die Frage zu beantworten:

ändert sich der Wert in der Variablen bestehen aus einer leeren Zeile oder einer Linie, die aus nichts als nicht druckbaren Leerzeichen wie Leerzeichen und Tabs?

+0

true alex, die eigentliche Anweisung ist in einer Schleife, die Daten aus der Datei liest und hat die Bedingung nächste if ($ variable = ~/^ \ s * $ /); – swapnil

+0

In diesem Fall bedeutet es "leere Zeilen in der Datei überspringen" –

+2

Alex, technisch ist es nicht ganz richtig. Die Regex-Suche in Perl hat eine Reihe von Nebenwirkungen, auch wenn Sie das Ergebnis keiner Variablen zuweisen. Zum Beispiel enthält die $ & Variable die letzte Übereinstimmung, also kann man sie in der nächsten Zeile verwenden, wie folgt: if (defined $ &) {...} –

1

=~ ist ein Match-Operator.

Die Anweisung gibt true zurück, wenn $ variable nur aus Leerzeichen besteht oder einfach leer ist.

So überprüft es nur, ob die Zeichenfolge leer ist oder nicht.

1
if ($variable =~ /^\s*$/) 

ist die gleiche wie

unless ($variable =~ /\S/) 

oder

if ($variable !~ /\S/) 
Verwandte Themen