Ich weiß, dass die folgenden drei Codezeilen darauf abzielen, die Zeichenfolge in $ value zu extrahieren und in $ header zu speichern. Aber ich weiß nicht, was die Unterschiede zwischen $value =~ s/^\s+//;
und $value =~ s/\s+$//;
sind.
Von perldoc perlfaq4
:
Wie entferne ich Leerzeichen am Anfang / Ende eines Strings?
Eine Substitution kann das für Sie tun. Für eine einzelne Zeile möchten Sie Ersetzen Sie alle führenden oder nachfolgenden Leerzeichen durch nichts. Sie können Mach das mit einem Paar Substitutionen:
%Vor%Sie können das auch als einzelne Ersetzung schreiben, obwohl es sich dreht aus der kombinierten Aussage heraus ist langsamer als die getrennten. Das ist dir vielleicht egal,
%Vor%In diesem regulären Ausdruck entspricht die Alternation entweder der Anfang oder Ende der Zeichenfolge, da die Anker eine niedrigere haben Vorrang vor dem Wechsel. Mit dem
/g
-Flag die Substitution macht alle möglichen Übereinstimmungen, also beides. Erinnere dich, das Nachlaufende newline stimmt mit dem\s+
überein, und der$
Anker kann mit dem übereinstimmen absolutes Ende der Zeichenkette, so verschwindet auch die neue Zeile.
Und von perldoc perlrequick
:
Um anzugeben, wo es übereinstimmen soll, würden wir den Anker verwenden Metazeichen
%Vor%^
und$
. Der Anker^
bedeutet Übereinstimmung bei der Anfang der Zeichenfolge und der Anker$
bedeutet Übereinstimmung am Ende von die Zeichenfolge oder vor einem Zeilenumbruch am Ende der Zeichenfolge. Etwas Beispiele: