240 likes | 403 Views
PERL & CGI. Seminar Internettechnologie Markus Matz 06.01.2005. Übersicht. Practical Extraction and Report Language (PERL) Allgemeines „Hallo Welt“ Skript Datentypen, Operatoren, Bedingungen und Schleifen Reguläre Ausdrücke Subroutinen Dateihandles Common Gateway Interface (CGI)
E N D
PERL & CGI Seminar Internettechnologie Markus Matz 06.01.2005
Übersicht • Practical Extraction and Report Language (PERL) • Allgemeines • „Hallo Welt“ Skript • Datentypen, Operatoren, Bedingungen und Schleifen • Reguläre Ausdrücke • Subroutinen • Dateihandles • Common Gateway Interface (CGI) • Allgemeines • Beispiel • Eingabedaten verarbeiten • Ausgabe • CGI Variable • Zusammenfassung
PERL – Allgemeines (1) • Larry Wall, 1987 • Informationen extrahieren und verarbeiten (z.B. Systemadministration) • oft zu komplex für Shellskripte • eigenes C-Programm zuviel Aufwand
PERL – Allgemeines (2) • weitgehend plattformunabhängig • Freeware, aktuelle Version 5 • Erstellen/Bearbeiten mit jedem Texteditor möglich • Dateien enden auf .pl
„Hallo Welt“ Skript #!/usr/bin/perl –w print "Hallo Welt!\n";
Datentypen – Skalare Variable • beginnen immer mit „$“ z. B. $variable • keine Unterscheidung zwischen String, Integer, Float… usw. • keine explizite Konvertierung nötig
Datentypen - Array • beginnen immer mit „@“ z.B. @array • Zuweisung z.B. durch Listen oder Range • @zahlen = (1, 2, 3, 4); • @vieleZahlen = (1 .. 1000); • Zugriff auf Elemente • $zahlen[0] das erste Element • $zahlen[3] das letzte Element • $zahlen[-1] das letzte Element • Dynamisches Wachsen möglich • $zahlen[4] = 10;
Datentypen – Hash (2) • beginnen immer mit „%“ z.B. %hash • beinhalten immer Schlüssel-Wert-Paare • %paare = ('rot'=>“255,0,0“, 'grün'=>“0,255,0“, 'blau'=>“0,0,255“); • Zugriff durch eindeutigen Schlüssel • $paare{‚rot‘} entspricht 255,0,0 • Konvertieren durch einfache Zuweisung • %a = @b; und umgekehrt @b =%a;
Operatoren • Arithmetische Operatoren • Addition, Subtraktion, Negation, Multiplikation, Division, Potenzieren und Modulo • Gleichheits- und Vergleichsoperatoren • Gleich, ungleich, kleiner, größer, kleinergleich und größergleich • Logische Operatoren • and, or, not
Bedingungen und Schleifen • if, if...else, und if...elsif • $wert = $dies || $das; • while-Schleifen (until-Schleifen) • do…while, do…until • For-Schleifen, foreach-Schleifen • Schleifensteuerung mit: • last – entspricht break in z. B. Java • next – springt zum nächsten Durchlauf • Redo – startet den aktuellen Durchlauf neu
Reguläre Ausdrücke • Muster in vorhandenen Daten finden und manipulieren • @links = $html =~ /href="(.*?)"/gi; [3]
Funktionsdefinition sub addiere{… Funktionsaufruf addiere(); lokale Variable durch my… definiert Rückgabewert durch return… Sub addieren{ my $zahl1 = $_[0]; my $zahl2 = $_[1]; return $zahl1 + $zahl2; } Subroutinen
Dateihandles open(WRITE, „>C:\Datei.txt“); print WRITE „1\n2\n3\n“; close(WRITE); open(APPEND, „>>C:\Datei.txt“); print APPEND „4\n5\n“; close(APPEND); open(READ, „C:\Datei.txt“); while (<READ>){ print $_; }
CGI - Allgemeines (1) • Benutzer fordert HTML-Formular an • Webserver sendet gewünschtes Formular • Benutzer füllt Formular aus und klickt auf „abschicken“ • Server gibt eingegebene Daten an CGI-Skript • Skript verarbeitet Daten und gibt Ergebnis an Server zurück • Server sendet Ergebnis an Benutzer
Beispiel (1) <HTML> <HEAD> <TITLE>Tell Me Your Name</TITLE> </HEAD> <BODY> <FORM ACTION="/cgi-bin/name.pl"> <P>Geben Sie Ihren Namen ein: <INPUT NAME="name"> <P><INPUT TYPE="SUBMIT" VALUE="Abschicken!"> </FORM> </BODY> </HTML>
Beispiel (2) #!/usr/bin/perl -w use strict; use CGI qw(:standard); print header; print start_html('Hallo!'); print "<H1>Hallo, ", param('name'),"!</H1>\n"; print end_html;
Eingabedaten verarbeiten #!/usr/bin/perl -w use strict; use CGI qw(:standard); print header; print start_html('Hallo!'); print "<H1>Hallo, ", param('name'),"!</H1>\n"; print end_html;
Ausgabe #!/usr/bin/perl -w use strict; use CGI qw(:standard); print header; print start_html('Hallo!'); print "<H1>Hallo, ", param('name'),"!</H1>\n"; print end_html;
Was ist noch möglich? • Weiterleitung an HTML-Dateien im Internet • Manipulation von Cookies • Dateien bearbeiten, die über HTML-Formulare hochgeladen wurden • Datenbankzugriffe • … • über 10.000 Module frei verfügbar
Zusammenfassung • PERL kann alles, was eine aktuelle Programmiersprache auch kann • Stärken im Umgang mit regulären Ausdrücken • CGI ermöglicht den Aufruf von PERL-Skripten durch einen Webserver • Übergebene Daten können durch das aufgerufene Skript bearbeitet werden • Ergebnis wird über den Webserver an den Browser zurückgegeben • Weite Verbreitung – für (fast) jedes Problem gibt es ein passendes Modul
Quellenangaben [1] www.perlboard.de [2] http://aktuell.de.selfhtml.org/links/cgiperl.htm [3] „Einführung in PERL für Win32 Systeme“; Schwartz, Olson und Christiansen; 1998; O‘Reilly Verlag