Modern Perl Best Practices mit Damian Conway

Damian Conway mg 9100b Ich hatte heute wieder einmal die Gelegenheit, einen brillianten Vortrag von Damian Conway an der ETH besuchen zu dürfen. Das Thema war Perl Best Practices und handelte von den Dos and Don’ts beim programmieren mit Perl.

Nebst der Tatsache, dass man viele interessante und neue Dinge über Perl kennenlernt, ist ein Besuch eines Conway-Kurses jedoch immer auch mit einer Menge Spass verbunden. Damian weiss die Zuschauer zu fesseln und zu unterhalten, selbst dann wenn jemand eine ganz spezifische Frage hat, welche für die meisten Zuhörer vielleicht gerade null Relevanz hat. Kurz: Die Zeit vergeht – leider – wie im Fluge und man kriegt eine geballte Ladung an Perl Know-How mit.

Wer also einmal die Gelegenheit hat bei einem Conway Vortrag dabei sein zu können, sollte die Chance unbedingt nutzen.

Ich für meinen Teil freue mich schon auf den Donnerstag, wenn Damian zum Thema Advanced Technical Presentation Techniques referiert.




Unix: Dateien mit nicht druckbaren Zeichen

Ich hatte gerade ein Verzeichnis auf einem Solaris 10 System, welches eine Datei mit dem Namen ¨ beinhaltete. Meistens sind solche Dateien Überbleibsel von wilden Kommandozeilen Orgien, bei denen irgend eine Umleitung schief gelaufen ist. Irgend ein Sonderzeichen hat sich dann im Dateinamen verewigt.

Doch wie schaut man solch eine Datei an (um entscheiden zu können, dass diese wirklich weg kann?) und wie löscht man diese dann?

Am einfachsten geht das wohl, wenn man statt über den Dateinamen über die Inode Nummer geht. (Eine Inode ist ein Eintrag in einem Unix-Dateisystem, der Metadaten einer Datei enthält.)

# ls -alFi
385683 drwxr-xr-x   8 pcs      iccc         512 Oct 29 11:59 ./
338148 drwxr-xr-x  23 root     root         512 Oct 13 12:55 ../
461707 drwxrwsr-x   2 root     iccc         512 Oct 13 12:54 tmp/
386788 -rw-r–r–   1 root     root        7694 Sep  1 08:31 ¨

Nun hat man aber immer noch das Problem, dass z.B. ein cat oder ein rm die Datei nicht behandeln können, da diese Programme nicht mit der Inode umgehen können. Hier hilft find, welcher gezielt nach Inodes suchen kann und dabei den korrekten Dateinamen mittels exec an ein anderes Programm übergeben kann.

Einige Beispiele

# Die Datei umbenennen in foobar
find . -inum 386788 -exec mv {} foobar \;

# Datei anschauen mit less
find . -inum 386788 -exec less {} \;

# Datei direkt löschen
find . -inum 386788 -exec rm {} \;