Perl-Einzeiler
Inhalt:
Anmerkung: Beachte bitte das richtige Quoten auf der Kommandozeile. Unter Unix/Linux (d. h. Shells wie Bash, tcsh, ksh etc.) muss Text in
einfache Anführungszeichen gesetzt werden, damit er nicht interpretiert wird, unter Windows in
doppelte Anführungszeichen.
Beispiel:
Windows:
perl -e "print $^O;"
Unix/Linux:
perl -e 'print $^O;'
Einen Text in allen Dateien im aktuellen Verzeichnis ändern
perl -p -i.bak -e 's/foo/bar/g' *
Diese Zeile ändert in allen Dateien im aktuellen Verzeichnis den Text
foo in
bar. Dabei wird von jeder Datei ein Backup mit der Endung
.bak angelegt (dafuer ist das
-i.bak da).
CR einfügen/entfernen
Konvertierung UNIX -> WINDOWS:
perl -i -p -e 's/\cJ/\cM\cJ/' *
Konvertierung WINDOWS -> UNIX:
perl -i -p -e 's/\cM//' *
Kaffeewecker
Wer setzt nicht mal beim Programmieren einen Kaffee auf und vergisst dann, ihn aus der Kaffeemaschine zu entfernen? Dafür kann man sich in Perl einen Wecker stellen:
perl -e "sleep(300)=>print qq.\a.x3"
\a gibt ein Piepssignal aus
oder besser lesbar:
perl -e "sleep(300); print qq(\a\a\a)"
Fingerprint (=MD5-Digest) einer Zeichenkette erstellen
perl -MDigest::MD5 -e "print Digest::MD5::md5_hex('zeichenkette')"
Fingerprint einer Datei erstellen
perl -MDigest::MD5 -le "open(FH, shift);binmode(FH);print Digest::MD5->new->addfile(*FH)->hexdigest" dateiname
Ganz einfache Ver- und Entschlüsselung von Dateien
perl -pe "$_ = ~$_" dateiname > ausgabedatei
durch ~ wird eine Zeichenkette binär negiert und somit unleserlich gemacht, kann aber durch dieselbe Operation wieder lesbar gemacht werden. Funktioniert leider teilweise nicht bei Binärdateien über Betriebssystemgrenzen hinweg
Filtern von Textdateien
perl -ne "print if /cmd\.exe/" access.log
gibt nur die Zeilen, in denen cmd.exe in der Datei access.log vorkommt, aus
Epochsekunden in ein lesbares Format umwandeln
perl -e "print ~~localtime(shift)" 1046880000
Titel einer Musik-CD von CDDB abfragen (Linux)
perl -MCDDB_get -le '%_=CDDB_get::get_cddb;print for @{ $_{track} }'
Datenstruktur anzeigen, die mit Storable serialisiert wurde
perl -MStorable -MData::Dumper -e "print Dumper retrieve shift" file.storable
Größe eines Bildes ausgeben
perl -MImage::Size -e "print Image::Size::attr_imgsize(shift)" xy.jpg
Zeilen ausgeben, die in fileA und fileB vorkommen
perl -ne 'print if ($seen{$_}.=@ARGV) =~ /10$/' fileA fileB
Zeilen ausgeben, die in einer Datei mehr als einmal vorkommen
perl -lne '$x{$_}++ and print' dateiname
Perl-Modulversion anzeigen
perl -MModul 'print $Modul::VERSION'
(Anstelle von Modul den Namen des Moduls einsetzen, z.B. Tk; funktioniert bei den meisten Modulen)
Weitere Tipps von euch?
--
StraT - 13 Jan 2004
--
HaraldBongartz - 17 Mar 2003
--
RonaldGoeggel - 14 Oct 2003