Dieses Snippet kümmert sich um abschließende Schrägstriche, außer für das Root-Verzeichnis:
#!/usr/bin/perl
my $test = './';
$test =~ s{(.+)/\z}{\1};
print $test."\n";
Das funktioniert folgendermaßen:
Der erste Teil des regulären Ausdrucks - s{(.+)/ \z } - definiert eine Gruppe in den Klammern () . Hierauf verweist die \1 im zweiten Teil des regulären Ausdrucks - { \1 } . Innerhalb dieser Gruppe habe ich ein oder mehrere Zeichen definiert - .+ - unmittelbar gefolgt von einem Schrägstrich, gefolgt von dem absoluten Ende der Zeichenkette - \z .
Der reguläre Ausdruck speichert alles innerhalb der Klammern, um später als \1 in der Ersatzspezifikation (im Wesentlichen der zweite Teil).
Dies funktioniert sehr ähnlich wie eine typische Sed-Strategie, nämlich
echo "./" | sed -e 's:\(..*\)/$:\1:'
Ich hoffe, dass dies für Sie von Nutzen ist.
1 Stimmen
Haben Sie die Dokumentation gelesen? überhaupt ? z.B. perldoc.perl.org/perreftut.html ?