Aus Linux-Magazin 09/2011

Perl-Skripte reproduzierbar umziehen (Seite 3)

Suchen nach Text

Oft weiß der Benutzer, dass sich unterhalb des aktuellen Pfades irgendwo eine Datei versteckt, in der sich ein gesuchter Textstring »Blabla« befindet. In der Shell ließe sich nun ein Find-Befehl wie etwa

find . -type f -exec grep  Blabla  {}/dev/null \;

absetzen, aber das ist extrem viel Tipparbeit und erfordert einiges Nachdenken, speziell wegen des Tricks mit »/dev/null« , das bei Einzeltreffern auch den Dateinamen anzeigt, und mit dem seltsamerweise erforderlichen maskierten Semikolon, das der Option »-exec« zeigt, dass das ihr übergebene Kommando damit endet.

Früher hatte ich ein Skript »findgrep« , das mit Perls File::Find-Modul eine rekursive Textsuche startete, aber seit es »ack« [3] gibt, lade ich stattdessen das mächtige Kommando einfach vom CPAN und tippe

ack  Blabla 

ein – fertig ist der Lack. Allerdings ist das Skript sehr penibel mit Dateitypen: Nur was es aufgrund der Namensendung als textähnliche Datei ansieht, untersucht es auch. Wer alle Dateien durchforsten will, muss »ack -a Blabla« eingeben.

Wer gesteigerten Wert auf Performance legt, ist in einem Git-Repository mit der oft übersehenen Funktion

git grep  Blabla 

weit besser bedient. Da Git die von ihm verwalteten Dateien in einem Index abspeichert, braucht es für die rekursive Suche keine Dateibäume zu durchforsten und schlägt deshalb den ungeschlachten Ansatz gerade bei Dateien, die noch nicht im Buffercache des Operationssystems liegen und in tief verschachtelten Ordnern ausharren, um Längen.

Automatisch formatiert

Damit selbst geschriebene Perl-Skripte vorgegebenen Normen genügen, schickt der ordnungsliebende Programmierer sie am Ende durch den Beautifyer »perltidy« . Dieses Skript ist als CPAN-Modul erhältlich und versteht eine Fülle von Konfigurationen, die jedem Stil gerecht werden. Wo stehen die geschweiften Klammern – in der If-Zeile oder in der nächsten? Kommt das »else« direkt nach der schließenden geschweiften Klammer oder erst nach einem Zeilenumbruch? Leerzeichen zwischen runden Klammern bei Funktionsaufrufen und deren Argumenten? Und – ganz wichtig – wie groß ist die maximale Zeilenlänge, ab wann soll der Formatierer lange Codezeilen umbrechen?

Die Manualseite von »perltidy« listet alle Optionen auf und beschreibt deren Wirkung. Listing 3 zeigt die Konfiguration für Perl-Listings im Linux-Magazin. Die Zeilenbreite beträgt 43 Zeichen, Zeilen in Blöcken rückt der Formatierer um zwei Zeichen ein »-i=2« . Bricht er eine Zeile um, rückt er den Zeilenrest auf der nächsten ebenfalls um zwei Zeichen ein »-ci=2« . Else-Anweisungen folgen direkt ohne Zeilenumbruch nach der schließenden geschweiften Klammer des If-Blocks (Cuddled Else, »-ce« ).

Listing 3

perltidyrc

01 # perltidy-Optionen für Perlskripts im Linux-Magazin
02
03 -l=43 # line width
04 -i=2 # 2 cols indent
05 -ci=2 # 2 cols continuation indent
06 -ce # cuddled else
07 -vt=2 # vertical tightness
08 -nbbc # no blank lines before whole-line comments

Und da Platz im Linux-Magazin stets Mangelware ist und die Redakteure gern damit geizen, steht die Vertical Tightness, also die vertikale Textdichte, auf dem höchsten Wert »-vt=2« . Bei dieser Option geizt wiederum der Formatierer mit Zeilenumbrüchen wie’s nur geht. Auch um Platz zu sparen, bestimmt »-nbbc« noch, dass vor ganzzeiligen Kommentaren keine Leerzeilen stehen.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 3 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben