Perl die  Taschenkettensäge   unter den Programmiersprachen Vortrag von Brigitte Jellinek, 18C3 19C3 if 2003
Inhalt <ul><li>Perl für Anfängerinnen </li></ul>
Inhalt <ul><li>Perl für Anfängerinnen </li></ul><ul><li>Perl für Fortgeschrittene </li></ul>
Inhalt <ul><li>Perl für Anfängerinnen </li></ul><ul><li>Perl für Fortgeschrittene </li></ul><ul><ul><li>und Umsteiger </li...
Inhalt <ul><li>Perl für Anfängerinnen </li></ul><ul><li>Perl für Fortgeschrittene </li></ul><ul><ul><li>und Umsteiger </li...
Inhalt <ul><li>Perl für Anfängerinnen </li></ul><ul><li>Perl für Fortgeschrittene </li></ul><ul><ul><li>und Umsteiger </li...
Inhalt <ul><li>Perl für Anfängerinnen </li></ul><ul><li>Perl für Fortgeschrittene </li></ul><ul><li>Perl für Profis </li><...
Inhalt <ul><li>Perl für Anfängerinnen </li></ul><ul><li>Perl für Fortgeschrittene </li></ul><ul><li>Perl für Profis </li><...
Perl für Anfänger <ul><li>x Gründe warum man Perl als erste Programmiersprache lernen sollte </li></ul>
Perl für Anfänger <ul><li>Wer programmieren lernt,  </li></ul><ul><li>hat ein Recht auf Spass </li></ul>
Mehr Spass durch Skript-Sprachen <ul><li>easy things should be easy </li></ul><ul><ul><li>keine sinnlose (oo-)Bürokratie <...
Mehr Spass durch Skript-Sprachen <ul><li>interpretiert  </li></ul><ul><ul><li>schnelle Rückmeldung </li></ul></ul>
Mehr Spass durch Skript-Sprachen <ul><li>wenige versch. Datentypen </li></ul><ul><ul><li>Zahl, Zeichenkette, Wahrheitswert...
Mehr Spass durch Skript-Sprachen <ul><li>Skript-Sprachen: </li></ul><ul><ul><li>Perl, PHP, VBScript, Python, Ruby, awk, .....
Perl für Anfänger <ul><li>Wer programmieren lernt,  </li></ul><ul><li>hat ein Recht auf  coole  Beispiele </li></ul>
cool? uncool? <ul><li>uncool </li></ul><ul><ul><li>n!  berechnen </li></ul></ul><ul><ul><li>DOS Programm </li></ul></ul><u...
Mehr Spass durch  Web-Programmierung <ul><li>Counter </li></ul><ul><li>Gästebuch </li></ul><ul><li>Postkarte </li></ul><ul...
Web-Programmierung <ul><li>HTML </li></ul><ul><li>Warnung  vor Javascript </li></ul><ul><li>Webspace mit ... </li></ul><ul...
Perl für Anfänger <ul><li>Wer programmieren lernt,  </li></ul><ul><li>sollte dafür nicht ein Vermögen ausgeben müssen </li...
Perl ist gratis <ul><li>Larry Wall + die Gefährten </li></ul>
Perl ist gratis + überall <ul><li>auf allen UNIXen, Mac OS X </li></ul><ul><ul><li>which perl </li></ul></ul><ul><li>Windo...
Perl für Anfänger <ul><li>3 Gründe warum man Perl als erste Programmiersprache lernen sollte </li></ul><ul><ul><li>Spass w...
Perl für Fortgeschrittene <ul><li>x Gründe, warum Leute  die schon programmieren können Perl lernen sollten </li></ul>
Weniger Aufwand,  mehr Wirkung veraltet, aber trotzdem beeindruckend
kenn ich schon <ul><li>Syntax: C, C++, Java, C# </li></ul>$a[ 0 ] = 42; $a[ 1 ] = &quot;zweiundvierzig&quot;; $a[ 2 ] = 3....
kenn ich schon <ul><li>Patterns: vi, grep, egrep, sed </li></ul>$text = &quot;Voldemort besitzt den zweiten Zauberstab, de...
kenn ich schon <ul><li>Assoziative Arrays: awk </li></ul>$ring{'Gandalf'}  = &quot;Narya&quot;; $ring{'Galadriel'} = &quot...
kenn ich schon <ul><li>Listen: Lisp </li></ul>@a = ( 0, &quot;eins&quot;, 2 );  # Liste zuweisen $a[ 3 ] = &quot;drei&quot...
kenn ich schon <ul><li>Dateien + Ordner: shell  </li></ul>
Von x zu Perl
Von PASCAL zu Perl <ul><li>BEGIN </li></ul><ul><li>END </li></ul>BEGIN Pascal; END Pascal;
Von PASCAL zu Perl <ul><li>{ </li></ul><ul><li>} </li></ul>BEGIN Pascal; END Pascal;
Von PASCAL zu Perl <ul><li>Syntax { } statt BEGIN END </li></ul><ul><li>nie wieder compilieren </li></ul><ul><li>Weniger A...
Von C zu Perl <ul><li>Schreibweise sehr ähnlich </li></ul><ul><li>weniger Stress mit Strings  </li></ul><ul><li>endlich Pl...
Von C++/Java zu Perl <ul><li>weniger Bürokratie </li></ul><ul><li>nicht alles muss OO sein </li></ul><ul><li>Simple things...
public class HelloWorld { public static void main(   String args[])  { System.out.print ln ( &quot;Hello World&quot;); } }
print  &quot;Hello World&quot;;
Von Javascript zu Perl <ul><li>zur Abwechslung: </li></ul><ul><ul><li>eine Sprache die  funktioniert </li></ul></ul><ul><l...
Von PHP zu Perl <ul><li>gratuliere!  </li></ul><ul><ul><li>du bist schon fast da </li></ul></ul><ul><ul><li>Syntax  </li><...
<?php / / gehört zu Foo $a = 10; $b = 20; go(); // gehört zu Bar $bar_a = 42; $bar_b = 23; bar_go(); ?>
package Foo; $a = 10; $b = 20; go(); package Bar; $a = 42; $b = 23; go(); print  $Foo::a; print $Foo::b; Foo::go();
Neu in Perl: Hash <ul><li>nicht was ihr denkt </li></ul><ul><li>„ assoziatives Array“ </li></ul><ul><li>Index nicht Intege...
Neu in Perl: RegExp <ul><li>oder „pattern matching“ </li></ul><ul><li>Text Ersetzen </li></ul><ul><li>Muster in Text finde...
Neu in Perl: RegExp $text = &quot;Voldemort besitzt den zweiten Zauberstab, der eine Phönixfeder enthält.&quot;; print &qu...
Module, Module, .. <ul><li>es gibt ziemlich viele  Module </li></ul><ul><li>z.B. </li></ul><ul><ul><li>Webformulare ausles...
Module installieren <ul><li>UNIX </li></ul><ul><ul><li>mit  cpan  von CPAN </li></ul></ul><ul><ul><li>lädt vom Internet, k...
Perl für Fortgeschrittene <ul><li>4 Gründe, warum Leute die schon programmieren können Perl lernen sollten </li></ul><ul><...
Perl Anwendung <ul><li>(typische) </li></ul>
Perl Anwendung:  CGI   <ul><li>Du sollst das Modul CGI verwenden </li></ul><ul><li>Du sollst das Modul CGI verwenden </li>...
Perl Anwendung:  System-Administration   <ul><li>Dateien und Ordner </li></ul><ul><ul><li>@dateien = glob &quot;*.zone&quo...
Perl Anwendung:  Data Munging <ul><li>umformatieren </li></ul><ul><li>Ziel: Text, HTML, SQL, XML,... </li></ul><ul><li>Que...
Perl für Profis <ul><li>x Gründe, warum Profis an Perl Freude haben werden </li></ul>
TMTOWTDI <ul><li>There‘s more  than one way  to do it </li></ul><ul><li>= Unglaubliche  Flexibilität der Syntax </li></ul>
TMTOWTDI print  &quot;hallo&quot;;  # funktion ohne klammer print (&quot;hallo&quot;);  # funktion mit klammer # auch mehr...
TMTOWTDI print  &quot;ein Anf-z. &quot; in meinem string&quot;; print  'ein Anf-z. &quot; in meinem string'; print qq{zwei...
Magie: Programme werden immer kürzer <ul><li>flexible Schreibweise </li></ul><ul><li>Kurzschreibweise </li></ul><ul><li>un...
Magie: Programme werden immer kürzer # Datei öffnen (mit Fehlerbehandlung) $OK = open(HANDLE, &quot;datei.txt&quot;); if (...
Magie: Programme werden immer kürzer # Datei öffnen (mit Fehlerbehandlung) $OK = open(HANDLE, &quot;datei.txt&quot;); unle...
Magie: Programme werden immer kürzer # Datei öffnen (mit Fehlerbehandlung) $OK = open(HANDLE, &quot;datei.txt&quot;); die ...
Magie: Programme werden immer kürzer # Datei öffnen (mit Fehlerbehandlung) open(HANDLE, &quot;datei.txt&quot;) or die &quo...
Die unsichtbare Variable <ul><li>while  ( $zeile = <DATA> ) { </li></ul><ul><li>  chomp $zeile; </li></ul><ul><li>$zeile =...
Unsichtbare Variable <ul><li>while  (  $_  = <DATA> ) { </li></ul><ul><li>  chomp  $_ ; </li></ul><ul><li>$_  =~ s/dies/da...
Unsichtbare Variable <ul><li>while  ( <DATA> ) { </li></ul><ul><li>  chomp; </li></ul><ul><li>s/dies/das/; </li></ul><ul><...
Sind die denn völlig wahnsinnig?
Ja
Obfuscated Perl Contest <ul><li>#:: ::-| ::-| .-. :||-:: 0-| .-| ::||-| .:|-. :|| open(Q,$ 0 );while(<Q>){if(/^ #(.*)$/){f...
Damian Conway <ul><li>Perl Hacker </li></ul><ul><li>Beispiel für weiteren Perl Wahnsinn </li></ul>
Damian Conway A less positional programming language There is no reason why programming languages could not also use infle...
Damian Conway A less positional programming language There is no reason why programming languages could not also use infle...
Damian Conway <ul><li>use Lingua::Romana::Perligata; </li></ul><ul><li>adnota Illud Cribrum Eratothenis maximum tum val in...
Damian Conway <ul><li>Acme::Bleach </li></ul><ul><ul><li>bereitet der komplizierte Code dir Kopfschmerzen? </li></ul></ul>...
Perl Community <ul><li>Larry Wall </li></ul><ul><li>Perl 6 Design Team + Parrot Team </li></ul><ul><li>Perl Foundation, si...
Perl Community <ul><li>Konferenzen </li></ul><ul><ul><li>Dt. Perl Workshop </li></ul></ul><ul><ul><li>O‘Reilly Conference ...
Vermeiden <ul><li>Manche Bewohner von Newsgroups </li></ul><ul><li>Uralte CGI-Skripts </li></ul><ul><ul><li>statt „Matts S...
Perl für Profis <ul><li>3 Gründe warum Profis an Perl Freude haben werden </li></ul><ul><ul><li>flexibilität </li></ul></u...
Perl Zukunft: Perl 5 <ul><li>lebt und gedeiht </li></ul><ul><li>bleibt auch wenn Perl6  kommt </li></ul>
Perl 6 Entwicklungsprozess <ul><li>Kaffeetasse (2001) </li></ul><ul><li>RFCs (2001) </li></ul><ul><li>Apocalypse  +  Exege...
Perl 6  VM <ul><li>Trennung von Sprache und VM </li></ul><ul><li>VM unterstützt andere Sprachen </li></ul>Parrot Python Pe...
Perl 6 Features <ul><li>(ausgewählte) </li></ul><ul><li>$a = 5 | 6 | 7; </li></ul><ul><li>if ( $note == 5 | 6 ) {...} </li...
Buchtipps <ul><li>Kamel-Buch </li></ul><ul><li>Programming with Perl </li></ul><ul><li>Programmieren mit Perl  </li></ul><...
Buchtipps <ul><li>Lama-Buch </li></ul><ul><li>Learning Perl </li></ul><ul><li>Einfühung in Perl (Win32)  </li></ul><ul><li...
Buchtipps <ul><li>Easy Perl </li></ul><ul><li>ich </li></ul><ul><li>CGI für Anfängerinnen </li></ul>
Buchtipps <ul><li>Perl Cookbook </li></ul><ul><li>Perl Kochbuch  </li></ul><ul><li>Tom Christiansen und Nathan Torkington ...
Buchtipps <ul><li>Object Oriented Perl </li></ul><ul><li>auch auf dt. </li></ul><ul><li>Damian Conway </li></ul>
Buchtipps <ul><li>Data Munging with Perl </li></ul><ul><li>David Cross </li></ul>
Viel Spass am Gerät
Nächste SlideShare
Wird geladen in …5
×

Perl - die Taschenkettensäge unter den Programmiersprachen - Vortrag 2003

3.385 Aufrufe

Veröffentlicht am

Vorstellung der Programmiersprache Perl auf drei Ebenen: für Programmier-Anfänger, für Fortgechrittene und für Profis. inkl. Buchtipps zu Perl.

Ein Vortrag den ich ursprünglich am Chaos Communication Congress 2000 in Berlin gehalten habe, hier in der Version von 2003.

Veröffentlicht in: Technologie
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
3.385
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
26
Aktionen
Geteilt
0
Downloads
7
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Perl - die Taschenkettensäge unter den Programmiersprachen - Vortrag 2003

  1. 1. Perl die Taschenkettensäge unter den Programmiersprachen Vortrag von Brigitte Jellinek, 18C3 19C3 if 2003
  2. 2. Inhalt <ul><li>Perl für Anfängerinnen </li></ul>
  3. 3. Inhalt <ul><li>Perl für Anfängerinnen </li></ul><ul><li>Perl für Fortgeschrittene </li></ul>
  4. 4. Inhalt <ul><li>Perl für Anfängerinnen </li></ul><ul><li>Perl für Fortgeschrittene </li></ul><ul><ul><li>und Umsteiger </li></ul></ul>
  5. 5. Inhalt <ul><li>Perl für Anfängerinnen </li></ul><ul><li>Perl für Fortgeschrittene </li></ul><ul><ul><li>und Umsteiger </li></ul></ul><ul><li>Perl für Profis </li></ul>
  6. 6. Inhalt <ul><li>Perl für Anfängerinnen </li></ul><ul><li>Perl für Fortgeschrittene </li></ul><ul><ul><li>und Umsteiger </li></ul></ul><ul><li>Perl für Profis </li></ul><ul><li>Die Perl Community </li></ul>
  7. 7. Inhalt <ul><li>Perl für Anfängerinnen </li></ul><ul><li>Perl für Fortgeschrittene </li></ul><ul><li>Perl für Profis </li></ul><ul><li>Die Perl Community </li></ul><ul><li>Perl Zukunft </li></ul>Perl 6
  8. 8. Inhalt <ul><li>Perl für Anfängerinnen </li></ul><ul><li>Perl für Fortgeschrittene </li></ul><ul><li>Perl für Profis </li></ul><ul><li>Die Perl Community </li></ul><ul><li>Perl Zukunft </li></ul><ul><li>Buchtipps </li></ul>
  9. 9. Perl für Anfänger <ul><li>x Gründe warum man Perl als erste Programmiersprache lernen sollte </li></ul>
  10. 10. Perl für Anfänger <ul><li>Wer programmieren lernt, </li></ul><ul><li>hat ein Recht auf Spass </li></ul>
  11. 11. Mehr Spass durch Skript-Sprachen <ul><li>easy things should be easy </li></ul><ul><ul><li>keine sinnlose (oo-)Bürokratie </li></ul></ul>print &quot;Hallo Welt, wie gehts?&quot;;
  12. 12. Mehr Spass durch Skript-Sprachen <ul><li>interpretiert </li></ul><ul><ul><li>schnelle Rückmeldung </li></ul></ul>
  13. 13. Mehr Spass durch Skript-Sprachen <ul><li>wenige versch. Datentypen </li></ul><ul><ul><li>Zahl, Zeichenkette, Wahrheitswert? alles Skalar </li></ul></ul>$a = 42; print &quot;Variable a ist $a &quot;; $a = &quot;zweiundvierzig&quot;; print &quot;Variable a ist $a &quot;; $a = 13.7603; print &quot;Variable a ist $a &quot;;
  14. 14. Mehr Spass durch Skript-Sprachen <ul><li>Skript-Sprachen: </li></ul><ul><ul><li>Perl, PHP, VBScript, Python, Ruby, awk, ... <hier könnte ihre Lieblingssprache stehen> </li></ul></ul><ul><li>„ richtige“ Programmiersprachen </li></ul><ul><ul><li>C, C++, Java, Pascal, Ada, ... <hier könnte ihre Lieblingssprache stehen> </li></ul></ul>
  15. 15. Perl für Anfänger <ul><li>Wer programmieren lernt, </li></ul><ul><li>hat ein Recht auf coole Beispiele </li></ul>
  16. 16. cool? uncool? <ul><li>uncool </li></ul><ul><ul><li>n! berechnen </li></ul></ul><ul><ul><li>DOS Programm </li></ul></ul><ul><ul><li>ewig programmieren, um ein Fenster zu erzeugen </li></ul></ul><ul><li>cool </li></ul><ul><ul><li>bunt </li></ul></ul><ul><ul><li>interaktiv </li></ul></ul><ul><ul><li>so gut wie die Profis </li></ul></ul><ul><li>heute: Web </li></ul>
  17. 17. Mehr Spass durch Web-Programmierung <ul><li>Counter </li></ul><ul><li>Gästebuch </li></ul><ul><li>Postkarte </li></ul><ul><li>E-Mail schicken </li></ul><ul><li>Fotoalbum </li></ul><ul><li>Abstimmung </li></ul>
  18. 18. Web-Programmierung <ul><li>HTML </li></ul><ul><li>Warnung vor Javascript </li></ul><ul><li>Webspace mit ... </li></ul><ul><li>Perl, PHP oder Visual Basic  </li></ul>
  19. 19. Perl für Anfänger <ul><li>Wer programmieren lernt, </li></ul><ul><li>sollte dafür nicht ein Vermögen ausgeben müssen </li></ul>
  20. 20. Perl ist gratis <ul><li>Larry Wall + die Gefährten </li></ul>
  21. 21. Perl ist gratis + überall <ul><li>auf allen UNIXen, Mac OS X </li></ul><ul><ul><li>which perl </li></ul></ul><ul><li>Windows: </li></ul><ul><ul><li>ActiveState (mit vielen modulen) </li></ul></ul><ul><ul><li>XAMPP (mit apache,mysql,php) </li></ul></ul><ul><li>MacPerl </li></ul><ul><li>Larry Wall + die Gefährten </li></ul><ul><li>Artistic License </li></ul>
  22. 22. Perl für Anfänger <ul><li>3 Gründe warum man Perl als erste Programmiersprache lernen sollte </li></ul><ul><ul><li>Spass weil Skriptsprache </li></ul></ul><ul><ul><li>Coole Beispiele mit CGI </li></ul></ul><ul><ul><li>Gratis und überall  </li></ul></ul>
  23. 23. Perl für Fortgeschrittene <ul><li>x Gründe, warum Leute die schon programmieren können Perl lernen sollten </li></ul>
  24. 24. Weniger Aufwand, mehr Wirkung veraltet, aber trotzdem beeindruckend
  25. 25. kenn ich schon <ul><li>Syntax: C, C++, Java, C# </li></ul>$a[ 0 ] = 42; $a[ 1 ] = &quot;zweiundvierzig&quot;; $a[ 2 ] = 3.141; for ($i=0; $i < 3; $i++ ) { print &quot;$i: Wert $a[ $i ] &quot;; }
  26. 26. kenn ich schon <ul><li>Patterns: vi, grep, egrep, sed </li></ul>$text = &quot;Voldemort besitzt den zweiten Zauberstab, der eine Phönixfeder enthält.&quot;; $text =~ s/Voldemort/Du weisst schon wer/g; print $text;
  27. 27. kenn ich schon <ul><li>Assoziative Arrays: awk </li></ul>$ring{'Gandalf'} = &quot;Narya&quot;; $ring{'Galadriel'} = &quot;Nenya&quot;; $ring{'Elrond'} = &quot;Velia&quot;; $ring{'Frodo'} = &quot;Ash Nazgh&quot;;
  28. 28. kenn ich schon <ul><li>Listen: Lisp </li></ul>@a = ( 0, &quot;eins&quot;, 2 ); # Liste zuweisen $a[ 3 ] = &quot;drei&quot;; # über Index zuweisen push( @a, &quot;bier&quot;); # hinten anfügen push( @a, &quot;fünf&quot;, 6); # auch mehrere Elemente splice( @a, 4, 1, &quot;VIER!&quot; ); # in schweren Fällen: # in der Mitte ersetzen print &quot;@a&quot;;
  29. 29. kenn ich schon <ul><li>Dateien + Ordner: shell </li></ul>
  30. 30. Von x zu Perl
  31. 31. Von PASCAL zu Perl <ul><li>BEGIN </li></ul><ul><li>END </li></ul>BEGIN Pascal; END Pascal;
  32. 32. Von PASCAL zu Perl <ul><li>{ </li></ul><ul><li>} </li></ul>BEGIN Pascal; END Pascal;
  33. 33. Von PASCAL zu Perl <ul><li>Syntax { } statt BEGIN END </li></ul><ul><li>nie wieder compilieren </li></ul><ul><li>Weniger Aufwand, grössere Wirkung </li></ul>BEGIN Pascal; END Pascal;
  34. 34. Von C zu Perl <ul><li>Schreibweise sehr ähnlich </li></ul><ul><li>weniger Stress mit Strings </li></ul><ul><li>endlich Plattformunabhängig </li></ul><ul><li>Variablen haben ein Sigil </li></ul><ul><ul><li>$a @b %c </li></ul></ul><ul><li>Weniger Typen </li></ul><ul><li>C an Perl antackern </li></ul><ul><ul><li>XS oder Inline::C  </li></ul></ul>int main( int argc, char * argv[]
  35. 35. Von C++/Java zu Perl <ul><li>weniger Bürokratie </li></ul><ul><li>nicht alles muss OO sein </li></ul><ul><li>Simple things should be simple, complicated things should be possible  </li></ul>
  36. 36. public class HelloWorld { public static void main( String args[]) { System.out.print ln ( &quot;Hello World&quot;); } }
  37. 37. print &quot;Hello World&quot;;
  38. 38. Von Javascript zu Perl <ul><li>zur Abwechslung: </li></ul><ul><ul><li>eine Sprache die funktioniert </li></ul></ul><ul><li>Variablen haben ein Sigil </li></ul><ul><ul><li>$a @b %c </li></ul></ul><ul><li>Typen gleich  </li></ul>
  39. 39. Von PHP zu Perl <ul><li>gratuliere! </li></ul><ul><ul><li>du bist schon fast da </li></ul></ul><ul><ul><li>Syntax </li></ul></ul><ul><ul><li>Typen </li></ul></ul><ul><ul><li>Sigil (~Änderung) </li></ul></ul><ul><li>grosse Projekte </li></ul><ul><ul><li>mit Namespaces * </li></ul></ul><ul><li>viele Module </li></ul><ul><ul><li>mit CPAN </li></ul></ul><ul><li>SysAdmin, DataMunging, Kommandozeile  </li></ul>
  40. 40. <?php / / gehört zu Foo $a = 10; $b = 20; go(); // gehört zu Bar $bar_a = 42; $bar_b = 23; bar_go(); ?>
  41. 41. package Foo; $a = 10; $b = 20; go(); package Bar; $a = 42; $b = 23; go(); print $Foo::a; print $Foo::b; Foo::go();
  42. 42. Neu in Perl: Hash <ul><li>nicht was ihr denkt </li></ul><ul><li>„ assoziatives Array“ </li></ul><ul><li>Index nicht Integer sondern String </li></ul>Narya Nenya Vilya Ash Nazgh Gandalf Galadriel Elrond Frodo 0 1 2 3 Narya Nenya Vilya Ash Nazgh 0 1 2 3 0 1 2 3
  43. 43. Neu in Perl: RegExp <ul><li>oder „pattern matching“ </li></ul><ul><li>Text Ersetzen </li></ul><ul><li>Muster in Text finden </li></ul><ul><li>ein paar Sonderzeichen </li></ul><ul><ul><li>m/ ^ Am Anfang war/ </li></ul></ul><ul><ul><li>m/ d+ EURO/ </li></ul></ul>
  44. 44. Neu in Perl: RegExp $text = &quot;Voldemort besitzt den zweiten Zauberstab, der eine Phönixfeder enthält.&quot;; print &quot;Vorher: $text <br> &quot;; $text =~ s/Voldemort/Du weisst schon wer/g; print &quot;Nachher: $text <br> &quot;; if ( $text =~ m/Zauberstab/ ) { print &quot;Zauberstab gefunden!&quot;; }
  45. 45. Module, Module, .. <ul><li>es gibt ziemlich viele Module </li></ul><ul><li>z.B. </li></ul><ul><ul><li>Webformulare auslesen mit CGI </li></ul></ul><ul><ul><li>Bilder malen mit GD </li></ul></ul><ul><ul><li>Webseiten runterladen mit LWP </li></ul></ul><ul><ul><li>Sachen rauslesen mit HTML::* </li></ul></ul><ul><ul><li>Datenbanken aller Art mit DBI </li></ul></ul>
  46. 46. Module installieren <ul><li>UNIX </li></ul><ul><ul><li>mit cpan von CPAN </li></ul></ul><ul><ul><li>lädt vom Internet, kompiliert (falls nötig), installiert </li></ul></ul><ul><li>Windows </li></ul><ul><ul><li>mit ppm </li></ul></ul><ul><ul><li>lädt vom Internet (vorkompiliert), installiert </li></ul></ul>
  47. 47. Perl für Fortgeschrittene <ul><li>4 Gründe, warum Leute die schon programmieren können Perl lernen sollten </li></ul><ul><ul><li>Ähnlich wie .... </li></ul></ul><ul><ul><li>Pattern Matching </li></ul></ul><ul><ul><li>Hashes </li></ul></ul><ul><ul><li>Viele Module </li></ul></ul>
  48. 48. Perl Anwendung <ul><li>(typische) </li></ul>
  49. 49. Perl Anwendung: CGI <ul><li>Du sollst das Modul CGI verwenden </li></ul><ul><li>Du sollst das Modul CGI verwenden </li></ul><ul><li>Du sollst das Modul CGI verwenden </li></ul><ul><li>Siehe http://perlwelt.horus.at/Beispiele/CGI/ </li></ul>
  50. 50. Perl Anwendung: System-Administration <ul><li>Dateien und Ordner </li></ul><ul><ul><li>@dateien = glob &quot;*.zone&quot; </li></ul></ul><ul><ul><li>if ( -e ‘done‘ and -M ‘done‘ > 1) { .. } </li></ul></ul><ul><ul><li>-X, chdir, chmod, chown, chroot, fcntl, glob, ioctl, link, lstat, mkdir, open, opendir, readlink, rename, rmdir, stat, symlink, umask, unlink, utime </li></ul></ul><ul><li>UNIX (eingebaut) </li></ul><ul><ul><li>chmod, chown, chroot, crypt, dbmclose, dbmopen, dump, endgrent, endhostent, endnetent, endprotoent, endpwent, endservent, exec, fcntl, flock, fork, getgrent, getgrgid, gethostent, getlogin, getnetbyaddr, getnetbyname, getnetent, getppid, getprgp, getpriority, getprotobynumber, getprotoent, getpwent, getpwnam, getpwuid, getservbyport, getservent, getsockopt, glob, ioctl, kill, link, lstat, msgctl, msgget, msgrcv, msgsnd, open, pipe, readlink, rename, select, semctl, semget, semop, setgrent, sethostent, setnetent, setpgrp, setpriority, setprotoent, setpwent, setservent, setsockopt, shmctl, shmget, shmread, shmwrite, socket, socketpair, stat, symlink, syscall, sysopen, system, times, truncate, umask, unlink, utime, wait, waitpid </li></ul></ul><ul><li>Win32 (Module) Net::LDAP </li></ul><ul><ul><li>AuthenticateUser, ChangeNotify, Clipboard, Console, DBIODBC, Event, EventLog, File, FileSecurity, Internet, IPC, Mutex, NetAdmin, NetResource, ODBC, OLE, Browser, Browser, Const, Enum, NEWS, NLS, TPJ, Variant, PerfLib, Pipe, Process, Registry, Semaphore, Service, Sound, TieRegistry </li></ul></ul>
  51. 51. Perl Anwendung: Data Munging <ul><li>umformatieren </li></ul><ul><li>Ziel: Text, HTML, SQL, XML,... </li></ul><ul><li>Quelle: jedes kranke Format </li></ul><ul><li>Werkzeuge </li></ul><ul><ul><li>Pattern Matching </li></ul></ul><ul><ul><li>binär: pack / unpack </li></ul></ul><ul><ul><li>Parse::RecDescent (yacc++) </li></ul></ul>
  52. 52. Perl für Profis <ul><li>x Gründe, warum Profis an Perl Freude haben werden </li></ul>
  53. 53. TMTOWTDI <ul><li>There‘s more than one way to do it </li></ul><ul><li>= Unglaubliche Flexibilität der Syntax </li></ul>
  54. 54. TMTOWTDI print &quot;hallo&quot;; # funktion ohne klammer print (&quot;hallo&quot;); # funktion mit klammer # auch mehrere funktionen: reverse sort keys %hash;
  55. 55. TMTOWTDI print &quot;ein Anf-z. &quot; in meinem string&quot;; print 'ein Anf-z. &quot; in meinem string'; print qq{zwei ' Anf-z. &quot; in meinem string}; print qq/zwei ' Anf-z. &quot; in meinem string/; print qq|zwei ' Anf-z. &quot; in meinem string|; $text =~ m/gesucht/; $text =~ m|gesucht|; $text =~ m=gesucht=; $text =~ m(gesucht);
  56. 56. Magie: Programme werden immer kürzer <ul><li>flexible Schreibweise </li></ul><ul><li>Kurzschreibweise </li></ul><ul><li>unsichtbare Variable </li></ul>
  57. 57. Magie: Programme werden immer kürzer # Datei öffnen (mit Fehlerbehandlung) $OK = open(HANDLE, &quot;datei.txt&quot;); if ( not $OK ) { die &quot;Problem beim lesen der Datei: $!&quot;; }
  58. 58. Magie: Programme werden immer kürzer # Datei öffnen (mit Fehlerbehandlung) $OK = open(HANDLE, &quot;datei.txt&quot;); unless ( $OK ) { die &quot;Problem beim lesen der Date: $!&quot;; } unless ist if not
  59. 59. Magie: Programme werden immer kürzer # Datei öffnen (mit Fehlerbehandlung) $OK = open(HANDLE, &quot;datei.txt&quot;); die &quot;Problem beim lesen der Date: $!&quot; unless $OK; Bedingung als &quot;Nachsatz&quot;
  60. 60. Magie: Programme werden immer kürzer # Datei öffnen (mit Fehlerbehandlung) open(HANDLE, &quot;datei.txt&quot;) or die &quot;Problem beim lesen der Date: $!&quot; Wie im Deutschen: friss oder stirb!
  61. 61. Die unsichtbare Variable <ul><li>while ( $zeile = <DATA> ) { </li></ul><ul><li> chomp $zeile; </li></ul><ul><li>$zeile =~ s/dies/das/; </li></ul><ul><li> print $zeile; </li></ul><ul><li>} </li></ul>$zeile ist eine ganz normale Variable
  62. 62. Unsichtbare Variable <ul><li>while ( $_ = <DATA> ) { </li></ul><ul><li> chomp $_ ; </li></ul><ul><li>$_ =~ s/dies/das/; </li></ul><ul><li> print $_ ; </li></ul><ul><li>} </li></ul>$_ ist eine besondere Variable...
  63. 63. Unsichtbare Variable <ul><li>while ( <DATA> ) { </li></ul><ul><li> chomp; </li></ul><ul><li>s/dies/das/; </li></ul><ul><li> print; </li></ul><ul><li>} </li></ul>$_ kann unsichtbar werden!
  64. 64. Sind die denn völlig wahnsinnig?
  65. 65. Ja
  66. 66. Obfuscated Perl Contest <ul><li>#:: ::-| ::-| .-. :||-:: 0-| .-| ::||-| .:|-. :|| open(Q,$ 0 );while(<Q>){if(/^ #(.*)$/){for(split( '-',$1)){$q=0;for(split){s/| /:.:/xg; s/:/../g;$Q=$_?length:$_;$q+=$q?$Q:$Q* 20 ; }print chr($q);}}}print &quot; &quot; ; #.: ::||-| .||-| :|||-| ::||-| ||-:: :|||-| .:| </li></ul>
  67. 67. Damian Conway <ul><li>Perl Hacker </li></ul><ul><li>Beispiel für weiteren Perl Wahnsinn </li></ul>
  68. 68. Damian Conway A less positional programming language There is no reason why programming languages could not also use inflexions, rather than position, to denote lexical roles.&quot; &quot;
  69. 69. Damian Conway A less positional programming language There is no reason why programming languages could not also use inflexions, rather than position, to denote lexical roles.
  70. 70. Damian Conway <ul><li>use Lingua::Romana::Perligata; </li></ul><ul><li>adnota Illud Cribrum Eratothenis maximum tum val inquementum tum biguttam tum stadium egresso scribe. vestibulo perlegementum da meo maximo . maximum tum novumversum egresso scribe. da II tum maximum conscribementa meis listis. dum damentum nexto listis decapitamentum fac sic lista sic hoc tum nextum recidementum cis vannementa da listis. next tum biguttam tum stadium tum nextum tum novumversum scribe egresso. </li></ul><ul><li>cis </li></ul>
  71. 71. Damian Conway <ul><li>Acme::Bleach </li></ul><ul><ul><li>bereitet der komplizierte Code dir Kopfschmerzen? </li></ul></ul><ul><ul><li>Acme::Bleach ist die Lösung! </li></ul></ul><ul><ul><li>Beim ersten Start des Programmes wird der Code durch Whitespace ersetzt </li></ul></ul><ul><ul><li>Kein Kopfweh mehr! </li></ul></ul><ul><ul><li>Programm funktioniert weiterhin </li></ul></ul>
  72. 72. Perl Community <ul><li>Larry Wall </li></ul><ul><li>Perl 6 Design Team + Parrot Team </li></ul><ul><li>Perl Foundation, siehe perl.org </li></ul><ul><li>PerlMongers = Usergroups pm.org </li></ul><ul><li>perlmonks.org = Forum </li></ul>
  73. 73. Perl Community <ul><li>Konferenzen </li></ul><ul><ul><li>Dt. Perl Workshop </li></ul></ul><ul><ul><li>O‘Reilly Conference </li></ul></ul><ul><ul><li>YAPC </li></ul></ul>
  74. 74. Vermeiden <ul><li>Manche Bewohner von Newsgroups </li></ul><ul><li>Uralte CGI-Skripts </li></ul><ul><ul><li>statt „Matts Script“ </li></ul></ul><ul><ul><li>nms </li></ul></ul>
  75. 75. Perl für Profis <ul><li>3 Gründe warum Profis an Perl Freude haben werden </li></ul><ul><ul><li>flexibilität </li></ul></ul><ul><ul><li>Kurzschreibweise </li></ul></ul><ul><ul><li>zu den Wahnsinnigen dazugehören  </li></ul></ul>
  76. 76. Perl Zukunft: Perl 5 <ul><li>lebt und gedeiht </li></ul><ul><li>bleibt auch wenn Perl6 kommt </li></ul>
  77. 77. Perl 6 Entwicklungsprozess <ul><li>Kaffeetasse (2001) </li></ul><ul><li>RFCs (2001) </li></ul><ul><li>Apocalypse + Exegese auf perl.com (2002-...) </li></ul>
  78. 78. Perl 6 VM <ul><li>Trennung von Sprache und VM </li></ul><ul><li>VM unterstützt andere Sprachen </li></ul>Parrot Python Perl 6 Perl 5 = Ponie
  79. 79. Perl 6 Features <ul><li>(ausgewählte) </li></ul><ul><li>$a = 5 | 6 | 7; </li></ul><ul><li>if ( $note == 5 | 6 ) {...} </li></ul><ul><li>if (any($a|$b) > all($x|$y|$z)) </li></ul>
  80. 80. Buchtipps <ul><li>Kamel-Buch </li></ul><ul><li>Programming with Perl </li></ul><ul><li>Programmieren mit Perl </li></ul><ul><li>Larry Wall et.al. </li></ul><ul><li>3. Auflage (?) </li></ul>
  81. 81. Buchtipps <ul><li>Lama-Buch </li></ul><ul><li>Learning Perl </li></ul><ul><li>Einfühung in Perl (Win32) </li></ul><ul><li>Randal L. Schwartz </li></ul>
  82. 82. Buchtipps <ul><li>Easy Perl </li></ul><ul><li>ich </li></ul><ul><li>CGI für Anfängerinnen </li></ul>
  83. 83. Buchtipps <ul><li>Perl Cookbook </li></ul><ul><li>Perl Kochbuch </li></ul><ul><li>Tom Christiansen und Nathan Torkington </li></ul><ul><li>Nachschlagen </li></ul>
  84. 84. Buchtipps <ul><li>Object Oriented Perl </li></ul><ul><li>auch auf dt. </li></ul><ul><li>Damian Conway </li></ul>
  85. 85. Buchtipps <ul><li>Data Munging with Perl </li></ul><ul><li>David Cross </li></ul>
  86. 86. Viel Spass am Gerät

×