Die Skriptsprache Perl
description
Transcript of Die Skriptsprache Perl
Die Skriptsprache Perl
Wolfgang Friebel
DESY Zeuthen
Inhalt des Kurses
Teil 1 Grundlegende Konzepte 1. Einführung 2. Datentypen 3. Kontrollstrukturen und Programmfluß 4. Reguläre Ausdrücke 5. Funktionen, I/O in Perl 6. Debugger, Profiler, Fehlerbehandlung
Teil 2 Objektorientiertes Perl Teil 3 Wichtige Perl-Module (Tk, DBI, CGI)
1. Einführung
Literatur Weitere Informationsquellen Perl auf dem Computer Perl Slogans Einführendes Beispiel
Literatur
Programming Perl (Camel)
Learning Perl (Llama)
Advanced Perl Programming
Perl Cookbook (Ram)
Object Oriented Perl
Mastering Regular Expressions
Effective Perl Programming
Learning Perl/Tk
Goto Perl5 (deutsch)
Perl Einführg., Anwendg., Referenz
Kurzreferenzen (perl, perl/Tk)
Wall, Christiansen, Schwartz 1996
Schwartz, Christiansen 1997
Sriram Srinivasan 1997
Christiansen, Torkington 1997
Damian Conway 1999
Jeffrey Friedl 1997
Hall, Schwartz 1998
Nancy Walsh 1999
Michael Schilli
Farid Hajji (2.Aufl) 2000
Vromans (perl), Lidie (perl/Tk)
Weitere Informationsquellen
Zeitschriften The Perl Journal (TPJ) www.tpj.com Artikel in iX, Linux Journal (deutsch und englisch)
Webadressen www.perl.com - umfangreiches Archiv www.perlmonth.com - online Zeitschrift CPAN (Comprehensive Perl Archive Network)
ftp://ftp.uni-hamburg.de/pub/soft/lang/perl/CPAN Newsgruppen
comp.lang.perl.*, de.lang.perl.*
Weitere Informationsquellen (2)
Vorträge und andere Dokumente(siehe auch www.perl.com) Perl für UNIX und C-Kenner (F. Hajji, Köln 1997) Perl5 by Example (M. Medinet) Advanced topics in perl programming (Christiansen) Practical Web Site Maintenance with Perl (Klein) Perl Quick reference guide Perl/Tk Pocket reference
Perl man pages (siehe nächste Seite)
Perl auf dem Computer
Version (perl -v), Installationsdetails (perl -V)Zur Zeit (1/2000) aktuell 5.005_03
ab 5.005 UNIX und NT Versionen aus einer Quelle Online Information mit man und perldoc
perldoc bietet mehr als man perldoc perl entspricht man perl perldoc -f function liefert Funktionsdefinition perldoc perllocal - zusätzlich installierte Module perldoc perlfaq liefert “FAQ’s” perldoc DBD::mysql liefert Modulbeschreibung
Perl Slogans
Die 3 großen Programmierertugendenlaziness, impatience and hubris
There is more than one way to do it (TMTOWTDI)Vergleich von natürlicher Sprache und Perl
Yet another perl hacker (CPAN/misc/japh)viele Programme, um diesen Spruch auszugeben
Far more than you ever wanted to know ReiheArtikelserie von T. Christiansen (u.a www.perl.com)
Einführendes Beispiel perl -e ’print ”hello world!\n”’ (UNIX) perl -e ”print qq(hello world!\n)” (NT)
Datei hallo.pl:
#!/usr/local/bin/perl -w #-w ist dein Freund
#Unser erstes Beispiel
print ”Wie geht’s?\n”;
$wie = <STDIN>;
chomp $wie;
print ”\u$wie? Naja Du arbeitest mit $^O\n”;
perl -w hallo.pl
2. Datentypen
3 grundlegende Datenformate (und Pointer)Strings, Integer, Double Precision Numbers (und Pointer)
Datentypen enthalten obige FormateKonstanten 123 “a” Referenzen \
Variablen $ Filehandles STDIN
Listen () FormateHEADER
Arrays @ Objekte $
Hashes %
Konstanten
Zahlen: keine Überraschungen (bis auf _) 123, 0755, 0x1f, 3e10, 1.5e-6, 10_000 Operationen mit Zahlen + - * / % ** ++ -- Vergleiche < <= > >= == != <=>
Strings nichtinterpretierte Strings: ’Wert: $100’ interpretierte Strings: ”$wie geht’s\nJa\0” Here-Dokumente ähnlich wie in UNIX Shells
Anführungszeichen
Traditionell
’text’ #keine Interpolation
”$a\n” #Interpolation
`ls -l`#Befehl (Interpol.)
/match/#Pattern (Interpol.)
Verallgemeinert
q[] #beliebige Begrenzer
qq{} #Klammern paarweise
qx() #
qw() #Wortweise Trennung
m// #Pattern match
qr() #Regexp (ab 5.005)
Konstanten (2)
Operationen mit Strings: Verkettung mit . (Punkt) ’abc’.’def’ Wiederholung mit x ’#’ x 70
Vergleiche mit Strings: lt le gt ge eq ne cmp
Lange Strings mit Here Dokumenten:$lang = <<EOF; #oder <<”EOF”;
$wie geht es?
Versuche doch auch mal ’EOF’ und `EOF`
EOF
Listen
Listen bestehen aus 0..n durch Komma getrennten und in Klammern eingeschlossenen Werten
(1, 2, 3, ”abc”, 3.14) Listenelemente können adressiert werden:
(1, 2, 3, abc, 3.14)[1,3] Listen können links vom Gleichheitszeichen stehen:
($a,$b) = ($b,$a); #Vertauschen Es gibt viele Funktionen, die Listen bearbeiten
Variablen
keine Deklaration nötig, Anfangswert ist undef kann mit use strict; verhindert werden Skalare Variablen
beginnen mit $, danach folgt ein Name $wie
der Name kann _ und 0..9 enthalten $a_01
der Name kann ein Ausdruck sein, dann in {}
Beispiel: ${”wi”.”e”} Spezielle (skalare magische) Variablen
haben ein Sonderzeichen als Name
Arrayvariablen
Arrayvariablenbeginnen mit @, danach folgt ein Name
@name = (”Friebel”, ”W.”);
Index beginnt mit Null (genauer mit $[)
Letzter Index von @name ist $#name (-1 wenn leer) Elemente von Arrayvariablen
werden mit [] indiziert und starten mit $, nicht mit @
$initial = $name[1]; Spezielle (magische) Arrays
z.B. @ARGV, @INC
Hashes
Hashes sind assoziative Arraysbeginnen mit %, danach folgt ein Name
statt mit Integer wird mit String (key) indiziert
Hashes können auch mit Listen gefüllt werden
%name = (´initial´, ´W.´,
family => ´Friebel´); Elemente von Hashes
werden mit {} indiziert und starten mit $, nicht mit %
$fname = $name{family};
Hashes (2)
Zugriff auf alle Elemente von Hasheserfolgt mit den Funktionen each, keys, values
Reihenfolge der Einspeicherung bleibt nicht erhalten Test ob Key/Value existiert
erfolgt mit exists und defined Spezielle (magische) Hashes
z.B. %ENV, %SIG
Hausaufgaben
Welche speziellen Zeichenkonstanten gibt es? Was ist der Wert von ”\n” in Windows? Welche Bitoperatoren gibt es? Welche Funktion ist äquivalent zu ”” bzw ’’?
Die Antworten sind mit man perlop zu finden
Schreibe ein Programm mit Here Dokument Welche magischen Variablen gibt es? (perlvar) Wozu sind die Funktionen defined und undef gut?