Was bewirkt dieser Ausdruck in der Perl-Programmierung?
$variable =~ /^\s*$/;
Was bewirkt dieser Ausdruck in der Perl-Programmierung?
$variable =~ /^\s*$/;
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.
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?
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
In diesem Fall bedeutet es "leere Zeilen in der Datei überspringen" –
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 $ &) {...} –
=~
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.
if ($variable =~ /^\s*$/)
ist die gleiche wie
unless ($variable =~ /\S/)
oder
if ($variable !~ /\S/)
Die Phrase "eine beliebige Zahl" ist ein wenig vage, würde ich sagen, null oder mehr Leerzeichen statt. –
Ich habe bearbeitet, um ein wenig expliziter zu sein –