Zuweilen möchte man nachlaufenden Whitespace aus Textdateien entfernen. Zuerst kommt einem vielleicht eine Lösung in den Sinn wie
perl -pe 's/\s*$//' testfile
Diese Lösung hat aber einen entscheidenden Nachteil, der schon beim ersten praktischen Versuch offensichtlich wird. Auch das Zeilenendezeichen "\n" zählt zum Whitespace und wird so mit entfernt, in der Ausgabe wird alles in eine einzige Zeile platziert. Perl kennt aber einen sehr effizienten Ausweg:
perl -lpe 's/\s*$//' testfile
Die Option -l entfernt das Newline, bevor die Zeile dem regulären Ausdruck übergeben wird, und fügt es hinterher wieder hinzu. In diesem Beispiel gibt das Script das übergebene Testfile auf Stdout wieder aus. Manchmal möchte man die Änderungen aber direkt in der zu editierenden Datei vornehmen (in place), sich aber das Original sicherheitshalber doch noch aufheben. Auch das kann Perl mit einem Kommandozeilenswitch:
perl -i.bak -ne 'print unless /^#/' script.sh
Das entfernt dank -i alle Kommentarzeilen, die mit einem Doppelkreuz beginnen, direkt in der Skriptdatei und sichert das Original mit der Endung .bak. Will man Zeilen an bestimmten Trennzeichen in Felder aufsplitten, denkt man vielleicht zuerst an awk, weil das dessen Default-Operationsmodus ist. Aber Perl kann das mit dem Kommandozeilenswitch -a genauso und mit -F kann man sogar das Trennzeichen definieren.
perl -F: -lane 'print $F[0]' /etc/passwd
Das gibt eine Liste der Benutzerkennungen aus, die sich im ersten Feld der Doppelpunkt-separierten Zeilen des passwd-Files finden.