Die Skriptsprache Perl

20
Die Skriptsprach e Perl Wolfgang Friebel DESY Zeuthen

description

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 - PowerPoint PPT Presentation

Transcript of Die Skriptsprache Perl

Page 1: Die Skriptsprache Perl

Die Skriptsprache Perl

Wolfgang Friebel

DESY Zeuthen

Page 2: Die Skriptsprache Perl
Page 3: Die Skriptsprache Perl

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)

Page 4: Die Skriptsprache Perl

1. Einführung

Literatur Weitere Informationsquellen Perl auf dem Computer Perl Slogans Einführendes Beispiel

Page 5: Die Skriptsprache Perl

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)

Page 6: Die Skriptsprache Perl

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.*

Page 7: Die Skriptsprache 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)

Page 8: Die Skriptsprache Perl

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

Page 9: Die Skriptsprache Perl

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)

Page 10: Die Skriptsprache Perl

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

Page 11: Die Skriptsprache Perl

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 %

Page 12: Die Skriptsprache Perl

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

Page 13: Die Skriptsprache Perl

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)

Page 14: Die Skriptsprache Perl

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

Page 15: Die Skriptsprache Perl

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

Page 16: Die Skriptsprache Perl

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

Page 17: Die Skriptsprache Perl

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

Page 18: Die Skriptsprache Perl

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};

Page 19: Die Skriptsprache Perl

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

Page 20: Die Skriptsprache Perl

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?