Ich habe eine Menge Probleme mit einer einfachen Suche und Ersetzung. Ich habe versucht, die Lösung in angeboten Wie entferne ich Leerzeichen in einer Perl-Zeichenfolge? aber konnte das nicht drucken.
Hier ist mein Beispielcode:
%Vor%Ich habe verschiedene Wege versucht, aber ich konnte das nicht.
Mein Endergebnis besteht darin, einige Aspekte des Verschiebens von Dateien in einer Linux-Umgebung zu automatisieren, aber manchmal haben die Dateien Leerzeichen im Namen, daher möchte ich den Platz aus der Variable entfernen.
Du bist fast da; Sie sind nur verwirrt über die Rangfolge der Operatoren. Der Code, den Sie verwenden möchten, ist:
%Vor% Zunächst wird damit der Variablen $hello
der Wert der Variablen $hello_nospaces
zugewiesen. Dann führt es die Ersetzungsoperation an $hello_nospaces
durch, als ob Sie
Weil der Bindeoperator =~
eine höhere Priorität hat als der Zuweisungsoperator =
, so wie Sie ihn geschrieben haben
führt zuerst die Substitution in $hello
durch und weist dann das Ergebnis der Substitutionsoperation (in diesem Fall 1) der Variablen $hello_nospaces
zu.
Ab 5.14 bietet Perl eine nicht-destruktive Option s///
:
%Vor%Zerstörungsfreie Substitution
Die Operatoren Substitution (
s///
) und Transliteration (y///
) unterstützen jetzt eine Option/r
, die die Eingabevariable kopiert, die Substitution auf der Kopie ausführt und das Ergebnis zurückgibt. Das Original bleibt unverändert.
Dies ist besonders nützlich mit
map
. Sieheperlop
für weitere Beispiele.
Also:
%Vor%sollte tun, was Sie wollen.
Sie müssen nur Klammern hinzufügen, damit Perls Parser verstehen kann, was Sie tun sollen.
%Vor%bis
%Vor%Teilen Sie diese Zeile:
%Vor%In diese zwei:
%Vor%Aus dem offiziellen Perl Regex-Lernprogramm :
Wenn es eine Übereinstimmung gibt, gibt s /// die Anzahl der vorgenommenen Ersetzungen zurück; Andernfalls wird false zurückgegeben.
Tags und Links string perl variables whitespace