Open Source im professionellen Einsatz
Newsletter abonnieren
HEFTARCHIV | NEWS | VIDEO | BLOGS | WHITEPAPER | EVENTS | ACADEMY | ABO

Partner-Links:
Shopping
Yatego Deutschlands größte Shoppingmall. 7000 Shops,
2.5 Mio Artikel. Alle Bestseller, Gutscheine und Liveshopping.

Firewall bei Mercateo kaufen.

Ein Preisvergleich bei Hardware lohnt sich.

Bei inkpool.de Laserdrucker und mehr bestellen.

Sie suchen günstige Laptops? Schauen Sie doch mal bei Preisvergleich.org, Preisvergleich.eu, Preisvergleich.ch und Preisvergleich.at vorbei.

Linux Jobs

Job offers Netherlands


user friendly

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

RSS-Feed der aktuellen News von Linux-Magazin Online
Diesen Artikel drucken Diesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren

Shell-Funktionen in Perl nachgebaut

Muschelperle

von Michael Schilli
Erschienen im Linux-Magazin 2005/02

Mit dem neuen Modul Sysadm::Install wagt Perl den Vorstoß ins Stammland von Bash & Co. Perl-Fan Michael Schilli behauptet: So gelingen die besseren Shellskripte.

Mit ein paar Shellkommandos sind Skripte für die Systemadministration schnell zusammengeklopft: Eine Installationsroutine mit »cp«, »mv« und »chmod« hier, eine mit »grep«, »awk« und »sed« gezimmerte Abfrage dort. Kommen weitere Anforderungen hinzu, werden die Skripte komplizierter, oft unübersichtlich. Zuweilen endet der Skripter in einer Sackgasse: Manches lässt sich in der Shell eben nicht oder nur sehr umständlich realisieren.

Kreative Programmierer finden zwar immer (zuweilen obskure) Wege, um Klippen zu umschiffen, und Shells wie Bash, Ksh und Tcsh bieten manche Vorzüge einer echten Programmiersprache. Außerdem ist Standard-Perl bei vielen einfachen Aufgaben nichts für faule Tipper. Wer will schon

open FILE, "<Filename" or
    die "Cannot open filename ($!)";

schreiben, wenn ein einfaches »cat Filename« die Datei in der Shell öffnen und ausgegeben kann? Sysadm::Install, ein neues Modul vom CPAN, schafft Abhilfe. Es exportiert Funktionen wie »cp«, »mv«, »untar«, »mkd«, »rmf« (»rm -f«) oder »cd«, damit Shellskripter sich in Perl zu Hause fühlen.

Darüber hinaus kennt es Funktionen für interaktive Benutzerabfragen, für die Dateimanipulation, den Download sowie vereinfachte Schnittstellen zum Aufruf externer Programme.

Transformer

Topng in Listing 1 zeigt ein Skript, das eine Reihe JPG-Bilder mit Hilfe des Utility »convert« ins PNG-Format umwandelt. Es holt mit »use Sysadm::Install qw(:all)« alle verfügbaren Funktionen in den aktuellen Namensraum. Zwei davon nutzt es: »sysrun()«, um ein externes Programm ablaufen zu lassen, und »rmf()«, die Sysadm::Install-Version von »rm -f«. Der Aufruf von

topng *.jpg

in einem Verzeichnis voller JPGs zeigt lange nichts - dann sind die PNGs fertig. Mehr Informationen gefällig? Das ist leicht: Da Sysadm::Install das Log::Log4perl-System unterstützt, reicht ein

use Log::Log4perl qw(:easy);
Log::Log4perl->easy_init($DEBUG);

am Anfang des Skripts und schon wird es gesprächiger:

2004/12/03 23:25:20 sysrun: convert 1.jpg 1.png
2004/12/03 23:25:32 rmf 1.jpg
2004/12/03 23:25:32 sysrun: convert 2.jpg 2.png
2004/12/03 23:25:44 rmf 2.jpg

Aber das ist nicht der einzige Grund, warum das Skript »sysrun()« und »rmf()« aus dem Sysadm::Install-Fundus verwendet und nicht etwa Perls Standardfunktionen. »system()« und »unlink()«. »sysrun()« und »rmf()« laufen, wie alle Funktionen aus Sysadm::Install, in einem Run-or-die-Modus: Jedes Ergebnis wird hinter den Kulissen minutiös geprüft und das Skript bei einem Fehler sofort mit »die()« abgebrochen. Shellprogrammierer, die bislang immer

cp a b || exit 1
mv c d || exit 1

schreiben mussten, atmen sicherlich auf. Auch verwendet »topng« bewusst nicht den »strict«-Modus, der sonst in der Perl-Welt mit fast schon religiöser Strenge eingesetzt wird. Es ist ein Quick-and-dirty-Skript und es steht dazu.

Listing 1:
Topng

01 #!/usr/bin/perl -w
02 # topng -- Transform jpg pics to PNG
03 
04 use Sysadm::Install qw(:all);
05 
06 for $jpg (@ARGV) {
07     ($png = $jpg) =~ s/jpg$/png/;
08     sysrun("convert", $jpg, $png);
09     rmf($jpg);
10 }.

Elegant entblättert

Wer nicht täglich damit arbeitet, hat die passenden Optionen für »tar« vielleicht nicht immer im Kopf: Ist versehentlich die Option »cf« statt »xf« gesetzt, überschreibt »tar« ungewollt das Archiv, statt es zu entpacken. Außerdem gibt es immer noch Unbelehrbare, die kein einzelnes Top-Verzeichnis einpacken, sondern auf oberster Ebene alle möglichen Dateien hineinpfeffern, mit denen der Entpackende unfreiwillig sein aktuelles Verzeichnis zuschüttet. »untar()« macht Schluss damit. Es nimmt den Namen einer »tar«-Datei entgegen, findet heraus, ob eine Dekompression notwendig ist, und entpackt den Inhalt. Ist kein einzelnes Top-Verzeichnis enthalten, sondern ein wildes Tohuwabohu, erzeugt es ein Top-Verzeichnis und legt den Inhalt darin sauber ab.

Das Beispielskript »untar« in Listing 2 wird einfach mit dem Tarball-Namen aufgerufen, beispielsweise mit:

untar pari-2.1.4.tgz

Wer statt stoischer Ruhe lieber Informationen über den Ablauf wünscht, fügt die Option »-v« hinzu und erhält Details über die Transaktionen.

Listing 2:
Untar

01 #!/usr/bin/perl
02 # untar -- Untar tarballs
03 
04 use warnings;
05 use strict;
06 
07 use Log::Log4perl qw(:easy);
08 use Getopt::Std;
09 use Sysadm::Install qw(untar);
10 
11 getopts('v', my %opts);
12 
13 Log::Log4perl->easy_init(
14     $opts{v} ? $DEBUG : $ERROR);
15 
16 for my $tar (@ARGV) {
17    untar($tar);
18 }
Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Diese Seite zu Mister Wong hinzuf�gen Webnews yigg it! Slashdot it! Twittern!
Ähnliche Artikel
ÜbersetzO-matik Vims Skriptsprache praktisch erklärt
Vom Thron gestürzt Die besten Lesereinsendungen des Programmierwettbewerbs
Mal ausspannen Einführung in das Buildsystem Cmake
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
Whitepaper
Daten Migration - Eine Publikation von Bloor Research

Datenmigrationsprojekte überschreiten häufig das Budget, neigen zu Verzögerung und werden unter Umständen komplett abgebrochen. Bloor Research ist eines der weltweit führenden IT-Forschungs-, Analyse- und Beratungsunternehmen und wird in dem vorliegenden White Paper die wichtigsten Aspekte dieser Problematik näher beleuchten. Ferner werden praktische Empfehlungen für erfolgreiche Migrationsprojekte gegeben, die Sie auf Ihr nächstes Projekt übertragen können.

Download PDF (Registrierung erforderlich)
Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele

Über die letzten Jahre hinweg haben sich Open Source Lösungen als fester Bestandteil des gesamten Datenintegrationsmarktes etabliert. Viele Unternehmen haben bereits das Open Source Modell für Ihre Datenintegrationsprojekte aufgegriffen. Das vorliegende White Paper illustriert anhand ausgewählter Fallstudien und Anwendungsbeispiele die Implementierung von Open Source Datenintegration in der Praxis und benennt die daraus resultierenden Vorteile.

Download PDF (Registrierung erforderlich)
Kommentare (0)
 

Impressum |Datenschutzerklärung | © 2010Linux New Media AG
Partner-Sites
Deutschland: [Admin-Magazin] [LinuxUser] [EasyLinux] [Linux-Community] [Linux Technical Review] [Ubuntu User]
Europa: [EasyLinux Polen] [Linux Magazine Polen] [Linux Magazine Spanien]
International: [Linux Magazine International] [Linux Pro Magazine] [Ubuntu User] [Linux Magazine Brasilien] [EasyLinux Brasilien]