Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Die Skriptsprache Perl

Ähnliche Präsentationen


Präsentation zum Thema: "Die Skriptsprache Perl"—  Präsentation transkript:

1 Die Skriptsprache Perl
Die Skriptsprache Perl Wolfgang Friebel DESY Zeuthen

2

3 Inhalt des Kurses Teil 1 Grundlegende Konzepte
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) Teil 1 soll in ca 5 Lektionen abgehandelt werden, Teil 2 in ca 4 und Teil 3 in 3 Lektionen. Änderungen nach Wunsch und Interesse

4 1. Einführung Literatur Weitere Informationsquellen
1. Einführung Literatur Weitere Informationsquellen Perl auf dem Computer Perl Slogans Einführendes Beispiel

5 Literatur Programming Perl (Camel) Learning Perl (Llama)
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) Titel 1-4 sind auch in deutsch erhältlich Als Einführung geeignet: Llama Buch, Learning Perl/Tk, Buch von Hajji Als Referenz geeignet: Camel Buch, Buch von Hajji, Regex Buch Bücher mit praktischen Tips: Cookbook, Effective Perl Programming, Goto Perl5, Hajji Bücher für Fortgeschrittene Advanced Perl Programming, OO Perl

6 Weitere Informationsquellen
Weitere Informationsquellen Zeitschriften The Perl Journal (TPJ) Artikel in iX, Linux Journal (deutsch und englisch) Webadressen - umfangreiches Archiv - online Zeitschrift CPAN (Comprehensive Perl Archive Network) ftp://ftp.uni-hamburg.de/pub/soft/lang/perl/CPAN Newsgruppen comp.lang.perl.*, de.lang.perl.* Perl Journal ist bei mir erhältlich Die TPJ Artikel sind online verfügbar (passwortgeschützt) Bei Suche nach Perl-Software sollte man zuerst im CPAN schauen Vieles ist auch auf unserem anonymen ftp (/net/ftp/unix/gnu/perl)

7 Weitere Informationsquellen (2)
Weitere Informationsquellen (2) Vorträge und andere Dokumente (siehe auch 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) Dokumente sind unter gesammelt

8 Perl auf dem Computer Version (perl -v), Installationsdetails (perl -V) Zur Zeit (1/2000) aktuell 5.005_03 ab 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 Unter UNIX sind auf manchen Systemen /usr/bin/perl und /usr/local/bin/perl unterschiedliche Versionen /usr/local/bin/perl ist i.d.R. besser gepflegt Unter Windows empfehle ich, die Befehle aus einem Editor heraus zu geben, der Command line editing und history unterstützt (emacs, xemacs, vim) Die MSDOS Eingabeaufforderung ist denkbar ungeeignet

9 Perl Slogans Die 3 großen Programmierertugenden
Perl Slogans Die 3 großen Programmierertugenden laziness, 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 Reihe Artikelserie von T. Christiansen (u.a

10 Einführendes Beispiel
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 Die Windows Kommandointerpreter akzeptieren keinén Apostroph Alles nach # bis Zeilenende ist Kommentar Befehle werden durch ; getrennt Leerzeichen und Zeilenumbruch sind nur in Srings signifikant Innerhalb von “ werden Variablen und spezielle Zeichen (\n) interpretiert Das Zeichen Newline (\n) wird bei Input mit übergeben Bei Output muß es explizit angegeben werden Variablen beginnen mit $ Folgt ein Sonderzeichen, sind das spezielle Variablen qq, chomp und print sind Funktionen Die Beschreibung erhält man mit perldoc -f

11 2. Datentypen 3 grundlegende Datenformate (und Pointer)
2. Datentypen 3 grundlegende Datenformate (und Pointer) Strings, Integer, Double Precision Numbers (und Pointer) Datentypen enthalten obige Formate Konstanten 123 “a” Referenzen \ Variablen $ Filehandles STDIN Listen () Formate HEADER Arrays @ Objekte $ Hashes %

12 Konstanten Zahlen: keine Überraschungen (bis auf _) Strings
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 Es gibt für Zahlen weitere Operationen (z.B. Bitoperationen) die hier nicht besprochen werden

13 Anführungszeichen Traditionell ’text’ #keine Interpolation
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) Benutzung der beiden Methoden ist gleichwertig Bei verallgemeinerter Methode ist Klammerschachtelung erlaubt qr kann Geschwindigkeitsvorteile bringen

14 Konstanten (2) Operationen mit Strings: Vergleiche mit Strings:
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 Die Konstruktion mit ’EOF’ interpretiert weder Variablen noc spezielle Zeichenkonstanten Die Konstruktion mit `EOF` wandelt Betriebssystembefehle in Text um Kein Leerzeichen zwischen << und EOF !!! Semikolon nicht vergessen !!!

15 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 In Listen könnten die Doppelapostrophs entfallen Das würde evtl. zu Verwechslung mit Funktionsnamen führen Deshalb ist das nicht empfohlen und führt mit use strict; oder use strict subs; zu einem Fehler

16 Variablen keine Deklaration nötig, Anfangswert ist undef
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 Die wichtigste magische Variable ist $_ Sie stellt das erwartete Argument in Funktionen dar, wenn keins angegeben wurde

17 Arrayvariablen Arrayvariablen Elemente von Arrayvariablen
Arrayvariablen Arrayvariablen beginnen danach folgt ein Name @name = (”Friebel”, ”W.”); Index beginnt mit Null (genauer mit $[) Letzter Index ist $#name (-1 wenn leer) Elemente von Arrayvariablen werden mit [] indiziert und starten mit $, nicht $initial = $name[1]; Spezielle (magische) Arrays @INC Um die vielen Apostrophs zu vermeiden schreibt man besser @name = qw( Friebel W. ); Spezielle Arrays (und Hashes) haben Namen, die nur Großbuchstaben enthalten, daher sollten nutzerdefinierte Variablennamen auch Kleinbuchstaben enthalten

18 Hashes Hashes sind assoziative Arrays Elemente von Hashes
Hashes Hashes sind assoziative Arrays beginnen 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}; Sowohl die Notation mit Komma als auch mit => sind zulässig Die => Notation ist besser lesbar und vermeidet Fehler (ungerade Anzahl von Elementen) Bei der => Notation können die Apostrophs für den Key entfallen Das gilt ebenfalls für die Keys in {}

19 Hashes (2) Zugriff auf alle Elemente von Hashes
Hashes (2) Zugriff auf alle Elemente von Hashes erfolgt 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 Setzt man $hash{key} = undef; dann existiert der Value nicht mehr Mit delete verschwindet auch der Key

20 Hausaufgaben Welche speziellen Zeichenkonstanten gibt es?
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?


Herunterladen ppt "Die Skriptsprache Perl"

Ähnliche Präsentationen


Google-Anzeigen