|
Perl lernen
Perl-Tools
Literatur und Links
Meine tägliche Praxis hat gezeigt, daß sehr häufig die Notwendigkeit
besteht, ASCII-formatierte Dateien mit geringen Änderungen in andere ASCII-Dateien
zu überführen. Die hierbei anfallenden Arbeitsschritte sind automatisierbar
und könnten meist mit einem Editorskript erledigt werden. Zuweilen wünscht
man sich jedoch weitere Kontrollelemente oder die Möglichkeiten, mit derart
gewonnenen Zwischendateien Programme auszuführen, deren Ausgabe weiterzuverarbeiten
...
Perl ist eine interpretative Sprache, die neben den Manipulationsmöglichkeiten
eines Editors die Elemente einer Kommandooberfläche und einer kompletten
Programmiersprache vereint. Durch die Interpretation können rasch fehlerfreie
Programm für alle wichtigen und alltäglichen, meist kleine, Probleme,
geschrieben werden, die den Aufwand einer Compilersprache deutlich unterschreiten.
Spätestens nach einigen Tagen merkt man dann, daß Perl nicht einfach
eine hervorragende Scriptsprache ist, sondern DIE Sprache schlechthin, sozusagen
C unter den Interpretern, und sich als schnelle Problemlösung für alle möglichen
Einsatzzwecke eignet (zumindest für die etwas kleineren, zuweilen wünscht man
sich doch den Komfort einer besser kontrollierenden Sprache wie Java oder C[++]).
Durch die stetig wachsende Zahl an Modulen findet man Lösungen zu fast
allen Problemen, vom ODBC-Treiber bis hin zu Socketkommunikation. Ein großes
Projekt von mir ist mein LaTeX-Begleitpaket OCHEM
für den Textsatz chemischer Formeln.
Da die mit Perl leicht lösbaren Probleme jedem leidig bekannt sein dürften
und jeder sich eigene Problemstellungen leicht ausdenken kann, habe ich im ZDV
im Herbst 1997 einen Perl 4-Programmierkurs gehalten, der eine Einführung
in die wichtigen Sprachelemente bot. Vor allem in der Literatur
finden Sie zahlreiche Möglichkeiten des Selbststudiums.
Informationen zum Kurs nicht nur für Mainzer Studis
- perl.zip Perl 4 Kurs-Script (PS geZIPpt)
- perlueb.zip Perlkurs Übungen
1. bis 5. Tag (PS-Dateien geZIPpt)
Keine bewegenden Tools, dafür müssen sie auch nicht erst selber
geschrieben werden :-)
Wie oft benötigt man einen Taschenrechner und hat nur diese unpraktischen
Desktoprechner zum Klicken ... folgender Mehrzeiler behebt das Problem auf rasche
Art: abakus.pl. Was man damit machen kann? Konstanten
benutzen, Perl-Ausdrücke auswerten, Unterprogramme anlegen und auswerten (Funktionen
definieren), Ableitungen bilden ...
dione$ abakus.pl
ABAKUS.PL V1.0 2000 I.Kloeckl
type 'help' for help. 'exit' to exit ABAKUS
ABAKUS> sin(90)
= 0.893996663600558
ABAKUS> $a = sqrt(2)
= 1.4142135623731
ABAKUS> $a*$a
= 2
ABAKUS> $l
= 2
ABKUS> 3*$pi
= 9.4247781
ABKUS> rad(180)
= 3.1415927
ABAKUS> sub quad{ my $x = shift; return $x*$x; }
=
ABAKUS> derive(\&quad, 1)
= 2.0000 1.9999
ABAKUS> exit
dione$
|
Und wie oft muß man mal ganz genau den Inhalt einer Datei anschauen
und hat keinen Hexdumper bei der Hand? Hier ist einer: dump.pl.
dione$ dump.pl --help
usage: dump.pl [opt...]
--cpl characters (bytes) per line
default is 8
--decimal print also decimal addresses
dione$ dump.pl dump.pl
0000: 23 21 20 2f 75 73 72 2f #! /usr/
0008: 62 69 6e 2f 70 65 72 6c bin/perl
0010: 20 0d 0a 23 20 43 41 4c ..# CAL
0018: 4c 20 53 59 4e 54 41 58 L SYNTAX
0020: 3a 20 5b 70 65 72 6c 5d : [perl]
0028: 20 64 75 6d 70 2e 70 6c dump.pl
...
dione$ dump.pl --cpl 16 dump.pl
0000: 23 21 20 2f 75 73 72 2f 62 69 6e 2f 70 65 72 6c #! /usr/bin/perl
0010: 20 0d 0a 23 20 43 41 4c 4c 20 53 59 4e 54 41 58 ..# CALL SYNTAX
0020: 3a 20 5b 70 65 72 6c 5d 20 64 75 6d 70 2e 70 6c : [perl] dump.pl
...
dione$ dump.pl --decimal dump.pl
0000: 23 21 20 2f 75 73 72 2f #! /usr/ ( 0)
0008: 62 69 6e 2f 70 65 72 6c bin/perl ( 8)
0010: 20 0d 0a 23 20 43 41 4c ..# CAL ( 16)
0018: 4c 20 53 59 4e 54 41 58 L SYNTAX ( 24)
...
dione$ dump.pl --cpl 16 dump.pl > dump.out
|
Links und Literatur zu Perl
|
- Perl
Docs Index zu verschiedenen Dokumentationen (Standard-Perl, APIs)
- CPAN Das CPAN (comprehensive
Perl archive network) ist die wichtigste Bezugsquelle für Perl-Module,
Perl-Sourcen und Binärdistributionen
-
de.comp.lang.perl.misc Perl-Newsgroup
|