Perl - die Taschenkettensäge unter den Programmiersprachen - Vortrag 2003
Upcoming SlideShare
Loading in...5
×
 

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

on

  • 4,306 views

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

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.

Statistics

Views

Total Views
4,306
Views on SlideShare
4,293
Embed Views
13

Actions

Likes
0
Downloads
4
Comments
0

4 Embeds 13

http://welten.horus.at 6
http://www.slideshare.net 4
http://blog.brigitte-jellinek.at 2
http://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

CC Attribution-ShareAlike LicenseCC Attribution-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

  • Perl die Taschenkettensäge unter den Programmiersprachen Vortrag von Brigitte Jellinek, 18C3 19C3 if 2003
  • Inhalt
    • Perl für Anfängerinnen
  • Inhalt
    • Perl für Anfängerinnen
    • Perl für Fortgeschrittene
  • Inhalt
    • Perl für Anfängerinnen
    • Perl für Fortgeschrittene
      • und Umsteiger
  • Inhalt
    • Perl für Anfängerinnen
    • Perl für Fortgeschrittene
      • und Umsteiger
    • Perl für Profis
  • Inhalt
    • Perl für Anfängerinnen
    • Perl für Fortgeschrittene
      • und Umsteiger
    • Perl für Profis
    • Die Perl Community
  • Inhalt
    • Perl für Anfängerinnen
    • Perl für Fortgeschrittene
    • Perl für Profis
    • Die Perl Community
    • Perl Zukunft
    Perl 6
  • Inhalt
    • Perl für Anfängerinnen
    • Perl für Fortgeschrittene
    • Perl für Profis
    • Die Perl Community
    • Perl Zukunft
    • Buchtipps
  • Perl für Anfänger
    • x Gründe warum man Perl als erste Programmiersprache lernen sollte
  • Perl für Anfänger
    • Wer programmieren lernt,
    • hat ein Recht auf Spass
  • Mehr Spass durch Skript-Sprachen
    • easy things should be easy
      • keine sinnlose (oo-)Bürokratie
    print "Hallo Welt, wie gehts?";
  • Mehr Spass durch Skript-Sprachen
    • interpretiert
      • schnelle Rückmeldung
  • Mehr Spass durch Skript-Sprachen
    • wenige versch. Datentypen
      • Zahl, Zeichenkette, Wahrheitswert? alles Skalar
    $a = 42; print "Variable a ist $a "; $a = "zweiundvierzig"; print "Variable a ist $a "; $a = 13.7603; print "Variable a ist $a ";
  • Mehr Spass durch Skript-Sprachen
    • Skript-Sprachen:
      • Perl, PHP, VBScript, Python, Ruby, awk, ... <hier könnte ihre Lieblingssprache stehen>
    • „ richtige“ Programmiersprachen
      • C, C++, Java, Pascal, Ada, ... <hier könnte ihre Lieblingssprache stehen>
  • Perl für Anfänger
    • Wer programmieren lernt,
    • hat ein Recht auf coole Beispiele
  • cool? uncool?
    • uncool
      • n! berechnen
      • DOS Programm
      • ewig programmieren, um ein Fenster zu erzeugen
    • cool
      • bunt
      • interaktiv
      • so gut wie die Profis
    • heute: Web
  • Mehr Spass durch Web-Programmierung
    • Counter
    • Gästebuch
    • Postkarte
    • E-Mail schicken
    • Fotoalbum
    • Abstimmung
  • Web-Programmierung
    • HTML
    • Warnung vor Javascript
    • Webspace mit ...
    • Perl, PHP oder Visual Basic 
  • Perl für Anfänger
    • Wer programmieren lernt,
    • sollte dafür nicht ein Vermögen ausgeben müssen
  • Perl ist gratis
    • Larry Wall + die Gefährten
  • Perl ist gratis + überall
    • auf allen UNIXen, Mac OS X
      • which perl
    • Windows:
      • ActiveState (mit vielen modulen)
      • XAMPP (mit apache,mysql,php)
    • MacPerl
    • Larry Wall + die Gefährten
    • Artistic License
  • Perl für Anfänger
    • 3 Gründe warum man Perl als erste Programmiersprache lernen sollte
      • Spass weil Skriptsprache
      • Coole Beispiele mit CGI
      • Gratis und überall 
  • Perl für Fortgeschrittene
    • x Gründe, warum Leute die schon programmieren können Perl lernen sollten
  • Weniger Aufwand, mehr Wirkung veraltet, aber trotzdem beeindruckend
  • kenn ich schon
    • Syntax: C, C++, Java, C#
    $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;; }
  • kenn ich schon
    • Patterns: vi, grep, egrep, sed
    $text = &quot;Voldemort besitzt den zweiten Zauberstab, der eine Phönixfeder enthält.&quot;; $text =~ s/Voldemort/Du weisst schon wer/g; print $text;
  • kenn ich schon
    • Assoziative Arrays: awk
    $ring{'Gandalf'} = &quot;Narya&quot;; $ring{'Galadriel'} = &quot;Nenya&quot;; $ring{'Elrond'} = &quot;Velia&quot;; $ring{'Frodo'} = &quot;Ash Nazgh&quot;;
  • kenn ich schon
    • Listen: Lisp
    @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;;
  • kenn ich schon
    • Dateien + Ordner: shell
  • Von x zu Perl
  • Von PASCAL zu Perl
    • BEGIN
    • END
    BEGIN Pascal; END Pascal;
  • Von PASCAL zu Perl
    • {
    • }
    BEGIN Pascal; END Pascal;
  • Von PASCAL zu Perl
    • Syntax { } statt BEGIN END
    • nie wieder compilieren
    • Weniger Aufwand, grössere Wirkung
    BEGIN Pascal; END Pascal;
  • Von C zu Perl
    • Schreibweise sehr ähnlich
    • weniger Stress mit Strings
    • endlich Plattformunabhängig
    • Variablen haben ein Sigil
      • $a @b %c
    • Weniger Typen
    • C an Perl antackern
      • XS oder Inline::C 
    int main( int argc, char * argv[]
  • Von C++/Java zu Perl
    • weniger Bürokratie
    • nicht alles muss OO sein
    • Simple things should be simple, complicated things should be possible 
  • 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
    • zur Abwechslung:
      • eine Sprache die funktioniert
    • Variablen haben ein Sigil
      • $a @b %c
    • Typen gleich 
  • Von PHP zu Perl
    • gratuliere!
      • du bist schon fast da
      • Syntax
      • Typen
      • Sigil (~Änderung)
    • grosse Projekte
      • mit Namespaces *
    • viele Module
      • mit CPAN
    • SysAdmin, DataMunging, Kommandozeile 
  • <?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
    • nicht was ihr denkt
    • „ assoziatives Array“
    • Index nicht Integer sondern String
    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
  • Neu in Perl: RegExp
    • oder „pattern matching“
    • Text Ersetzen
    • Muster in Text finden
    • ein paar Sonderzeichen
      • m/ ^ Am Anfang war/
      • m/ d+ EURO/
  • 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;; }
  • Module, Module, ..
    • es gibt ziemlich viele Module
    • z.B.
      • Webformulare auslesen mit CGI
      • Bilder malen mit GD
      • Webseiten runterladen mit LWP
      • Sachen rauslesen mit HTML::*
      • Datenbanken aller Art mit DBI
  • Module installieren
    • UNIX
      • mit cpan von CPAN
      • lädt vom Internet, kompiliert (falls nötig), installiert
    • Windows
      • mit ppm
      • lädt vom Internet (vorkompiliert), installiert
  • Perl für Fortgeschrittene
    • 4 Gründe, warum Leute die schon programmieren können Perl lernen sollten
      • Ähnlich wie ....
      • Pattern Matching
      • Hashes
      • Viele Module
  • Perl Anwendung
    • (typische)
  • Perl Anwendung: CGI
    • Du sollst das Modul CGI verwenden
    • Du sollst das Modul CGI verwenden
    • Du sollst das Modul CGI verwenden
    • Siehe http://perlwelt.horus.at/Beispiele/CGI/
  • Perl Anwendung: System-Administration
    • Dateien und Ordner
      • @dateien = glob &quot;*.zone&quot;
      • if ( -e ‘done‘ and -M ‘done‘ > 1) { .. }
      • -X, chdir, chmod, chown, chroot, fcntl, glob, ioctl, link, lstat, mkdir, open, opendir, readlink, rename, rmdir, stat, symlink, umask, unlink, utime
    • UNIX (eingebaut)
      • 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
    • Win32 (Module) Net::LDAP
      • 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
  • Perl Anwendung: Data Munging
    • umformatieren
    • Ziel: Text, HTML, SQL, XML,...
    • Quelle: jedes kranke Format
    • Werkzeuge
      • Pattern Matching
      • binär: pack / unpack
      • Parse::RecDescent (yacc++)
  • Perl für Profis
    • x Gründe, warum Profis an Perl Freude haben werden
  • TMTOWTDI
    • There‘s more than one way to do it
    • = Unglaubliche Flexibilität der Syntax
  • TMTOWTDI print &quot;hallo&quot;; # funktion ohne klammer print (&quot;hallo&quot;); # funktion mit klammer # auch mehrere funktionen: reverse sort keys %hash;
  • 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);
  • Magie: Programme werden immer kürzer
    • flexible Schreibweise
    • Kurzschreibweise
    • unsichtbare Variable
  • 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;; }
  • 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
  • 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;
  • 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!
  • Die unsichtbare Variable
    • while ( $zeile = <DATA> ) {
    • chomp $zeile;
    • $zeile =~ s/dies/das/;
    • print $zeile;
    • }
    $zeile ist eine ganz normale Variable
  • Unsichtbare Variable
    • while ( $_ = <DATA> ) {
    • chomp $_ ;
    • $_ =~ s/dies/das/;
    • print $_ ;
    • }
    $_ ist eine besondere Variable...
  • Unsichtbare Variable
    • while ( <DATA> ) {
    • chomp;
    • s/dies/das/;
    • print;
    • }
    $_ kann unsichtbar werden!
  • Sind die denn völlig wahnsinnig?
  • Ja
  • Obfuscated Perl Contest
    • #:: ::-| ::-| .-. :||-:: 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; ; #.: ::||-| .||-| :|||-| ::||-| ||-:: :|||-| .:|
  • Damian Conway
    • Perl Hacker
    • Beispiel für weiteren Perl Wahnsinn
  • 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;
  • 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.
  • Damian Conway
    • use Lingua::Romana::Perligata;
    • 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.
    • cis
  • Damian Conway
    • Acme::Bleach
      • bereitet der komplizierte Code dir Kopfschmerzen?
      • Acme::Bleach ist die Lösung!
      • Beim ersten Start des Programmes wird der Code durch Whitespace ersetzt
      • Kein Kopfweh mehr!
      • Programm funktioniert weiterhin
  • Perl Community
    • Larry Wall
    • Perl 6 Design Team + Parrot Team
    • Perl Foundation, siehe perl.org
    • PerlMongers = Usergroups pm.org
    • perlmonks.org = Forum
  • Perl Community
    • Konferenzen
      • Dt. Perl Workshop
      • O‘Reilly Conference
      • YAPC
  • Vermeiden
    • Manche Bewohner von Newsgroups
    • Uralte CGI-Skripts
      • statt „Matts Script“
      • nms
  • Perl für Profis
    • 3 Gründe warum Profis an Perl Freude haben werden
      • flexibilität
      • Kurzschreibweise
      • zu den Wahnsinnigen dazugehören 
  • Perl Zukunft: Perl 5
    • lebt und gedeiht
    • bleibt auch wenn Perl6 kommt
  • Perl 6 Entwicklungsprozess
    • Kaffeetasse (2001)
    • RFCs (2001)
    • Apocalypse + Exegese auf perl.com (2002-...)
  • Perl 6 VM
    • Trennung von Sprache und VM
    • VM unterstützt andere Sprachen
    Parrot Python Perl 6 Perl 5 = Ponie
  • Perl 6 Features
    • (ausgewählte)
    • $a = 5 | 6 | 7;
    • if ( $note == 5 | 6 ) {...}
    • if (any($a|$b) > all($x|$y|$z))
  • Buchtipps
    • Kamel-Buch
    • Programming with Perl
    • Programmieren mit Perl
    • Larry Wall et.al.
    • 3. Auflage (?)
  • Buchtipps
    • Lama-Buch
    • Learning Perl
    • Einfühung in Perl (Win32)
    • Randal L. Schwartz
  • Buchtipps
    • Easy Perl
    • ich
    • CGI für Anfängerinnen
  • Buchtipps
    • Perl Cookbook
    • Perl Kochbuch
    • Tom Christiansen und Nathan Torkington
    • Nachschlagen
  • Buchtipps
    • Object Oriented Perl
    • auch auf dt.
    • Damian Conway
  • Buchtipps
    • Data Munging with Perl
    • David Cross
  • Viel Spass am Gerät