Open Source im professionellen Einsatz

Newsletter abonnieren
Seite durchsuchen

HEFTARCHIV | NEWS | E-BIBLIOTHEK | VIDEO | BLOGS | WHITEPAPER | EVENTS | ACADEMY | ABO | SHOP

user friendly

  Home  »  Heft & Abo  »  Heftarchiv  »  2005  »  02  »  Muschelperle  

RSS-Feed der aktuellen News von Linux-Magazin Online Folgen Sie Linux-Magazin Online auf Twitter
Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark

Schlürf

Weil Skripte oft mit den gesamten Daten einer Datei arbeiten, soll es in Perl 6 künftig eine »slurp()«-Funktion geben. Sysadm::Install bietet schon heute eine entsprechende Funktion, zusammen mit dem Gegenstück »blurt()«, das gespeicherte Daten in einem Rutsch wieder in eine Datei zurückschreibt.

Ein Beispiel: Um Linux dazu zu bewegen, nach dem Booten nicht mehr automatisch in den grafischen X11-Modus zu wechseln, sondern den Login im Textmodus auszuführen, muss der Admin in »/etc/inittab« eine Zeile ändern. In »id:5:initdefault:« ersetzt er die »5« durch eine »3«. Mit »slurp()« und »blurt()« geht das ganz einfach, wie Listing 6 (Fixinittab) zeigt.

Listing 6:
Fixinittab

01 #!/usr/bin/perl
02 # fixinittab
03 
04 use Sysadm::Install qw(:all);
05 
06 $file = "/etc/inittab";
07 $data = slurp $file;
08 $data =~
09    s/id:5:initdefault:/id:3:initdefault:/;
10 blurt $data, $file;

Es geht sogar noch kompakter, wie Listing 7 belegt. Ähnlich Perls Inline-Edit-Modus (»perl -p -i -e "..."«) stellt Sys-adm::Install die »pie()«-Funktion bereit. Sie nimmt mindestens zwei Argumente: eine Referenz auf einen vom Benutzer definierten Callback und einen oder mehrere Dateinamen. »pie()« geht zeilenweise durch alle angegebenen Dateien, ruft für jede den Callback auf und ersetzt die Zeile durch den Rückgabewert der Funktion. Sind alle Änderungen ausgeführt, schreibt »pie()« das Ergebnis wieder in die Datei zurück.

Listing 7:
Fixinittab-pie

01 #!/usr/bin/perl
02 # fixinittab-pie
03 
04 use warnings;
05 use strict;
06 
07 use Sysadm::Install qw(:all);
08 
09 pie(sub {
10   s/id:5:initdefault
11    /id:3:initdefault/gx; $_;
12   }, "/etc/inittab");

Bei Ersetzungen mit dem Substitutionsoperator ist zu beachten, dass »s/a/b/« nicht etwa den Ergebnisstring zurückliefert, sondern die Anzahl der ausgeführten Ersetzungen. Besteht der Callback nur aus einer Ersetzung, sorgt »s/a/b/; ;« dafür, dass auch wirklich der Ergebniswert der Ersetzung zurück in die Datei wandert.

Tipp für Faule

Nicht für alle klingt das Klappern der Tastatur wie Musik: Wer es leid ist, ständig »#!/usr/bin/perl« zu tippen und »use Sysadm::Install qw(:all)«, der definiert sich einfach ein Vim-Makro wie in Abbildung 1. Es ordnet der Tastenkombination [!]+[P] (P steht für Perl) im Kommandomodus ein Insert-Kommando zu, gefolgt von den ersten sieben Zeilen eines Sysadm::Install-Skripts: der Perl-Shebang-Zeile, etwas Verzierung, einem Template für den Skriptnamen, dem Verwendungszweck und dem Namen des Autors. Das ».vimrc«-Kommando muss in einer Zeile stehen. Die später als »^M« angezeigten Zeilenumbrüche erreicht man mit [Ctrl]+[V] gefolgt von [Enter] im Vim-Eingabemodus.


Abbildung 1: Das Makro ordnet der Tastenkombination [!]+[P] im Kommandomodus die Startzeilen eines Perl-Skripts zu und setzt den Editor in den Einfügemodus.

Ein neues Skript entsteht einfach mit dem Aufruf »vim test-script«. Ein anschließendes [!]+[P] fügt den Header ein und setzt den »vim« in den Insert-modus (Abbildung 2). Ein aufregendes Perl-Shellskript kann beginnen! (jcb)


Abbildung 2: Der Erfolgt des Vim-Makros in Abbildung 1: Nach [!]+[P] kann der Skriptautor verzögerungsfrei drauflosskripten.

Infos

[1] Listings zu diesem Artikel: [ftp://www.linux-magazin.de/pub/listings/magazin/2005/02/Perl]

[2] Sysadm::Install: [http://search.cpan.org/~mschilli/Sysadm-Install-0.09/]

Der
Autor

Michael Schilli arbeitet als Software-Engineer bei Yahoo! in Sunnyvale, Kalifornien. Er hat "Goto Perl 5" (deutsch) und "Perl Power" (englisch) für Addison-Wesley geschrieben und ist unter [mschilli@perlmeister.com] zu erreichen. Seine Homepage: [http://perlmeister.com]


Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark
Ähnliche Artikel
ÜbersetzO-matik Vims Skriptsprache praktisch erklärt
Tooltipps Werkzeuge im Kurztest
Wehrhafte Mediziner Große VPNs einfach verwalten mit OpenVPN und Skripten
Das Log als Ohrwurm Perl-Skript realisiert das singende, klingende Internet
Puppenspiel Konfigurationsverwaltung mit Puppet
Tooltipps Werkzeuge im Kurztest
Whitepaper
Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele (Folge 2)

Der zweite Teil des Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele White Papers beleuchtet anhand weiterer ausgewählter Case Studies die Implementierung von Open Source Datenintegration in der Praxis und benennt die daraus resultierenden Vorteile.

Download PDF (Registrierung erforderlich)
Usage Landscape Enterprise Open Source Data Integration

Die Nachfrage nach Datenintegrationslösungen für Unternehmen ist zunehmend gestiegen und vor allem das Interesse an Open Source Technologien wird immer größer. Doch wie und von wem werden Open Source Datenintegrationslösungen genutzt und welches Nutzungsverhalten lässt sich daraus ableiten? Das vorliegende White Paper präsentiert die Erfahrungswerte von über 1000 Open Source Nutzern und liefert fundierte Antworten auf diese Fragen.

Download PDF (Registrierung erforderlich)
Kommentare (0)