Perl


Perl Überblick

Einleitung

Perl von Lary Wall entwickelt, Version 5.0.

Auch Pathologically Eclectic Rubbish Lister

Perl Dateien haben Endung .pl.

Ausführung mit

perl tuwas.pl

Unter UNIX andere Variante:

#!/usr/bin/perl

# Unix Kommentar,
! der Name eines Kommandointerpreters folgt
/usr/bin/ ist eine Pfadangabe,

Kurzes Beispiel:

Frage nach dem Namen und Ausgabe von "Hallo, ... !"

      (1)  #!perl
      (2)  print "Wie ist dein Name ? ";
      (3)  $name = <STDIN>;
      (4)  chop($name);
      (5)  print "Hallo, $name !\n";

Sprachkonstrukte

der Kontext in dem ein Literal oder eine Variable verwendet wird, wird durch die verwendeten Operatoren erzwungen.

Beispiel

"33" + "44" ergibt Zahl 77

33 . 44 ergibt Zeichenkette "3344"

Variablen

Beispiel: Array

      @fred = (11,22,33);
      @barney = @fred;

Beispiel: assoziatives Array

      %fred = (1,22,'h',33,"\t",44);
      %barney = %fred;

Beispiel: Skalare

       $b = $a + $fred[2] + $fred{'h'};    

Kontrollstrukturen

Statements,

z.B. Zuweisungen VAR = EXPR;,

Folgen von Statements { ... },

Statements immer mit Semikolon abgeschlossen

Kontrollstatements

Nach der Auswertung der Ausdrücke EXPR bedeuten die leere Zeichenkette "", "0" und 0 false; alle anderen Werte bedeuten true (z.B. auch "00").

Match-Operatoren und Variablen Substitutionen.

Ein- und Ausgabe

Dateien, Pipes und Filehandles.

Print-Formatierung

Perl Funktionen reichen von arithmetischen Funktionen und Funktionen für Zeichenketten bis zu Datenbank, Netzwerk und Interprozesskomunikations Funktionen.


CGI Anwendungen

Perl Skript, das mit CGI zusammenarbeitet. Es dekodiert die von GCI empfangenen Variablen und Werte, generiert eine HTML Seite mit diesen Informationen und schickt sie an den Absender zurück.

#!/usr/bin/perl
# test perl program to be used for parsing CGI methods
# send anything to this script either via GET or POST methods

&InsertHeader("CGI generated text");
&Parse;
&InsertTrailer;

# subrountines
sub Parse {
    local(@pairs,$pair,$val,$pos, $i);

    if ($ENV{'REQUEST_METHOD'} eq "GET") {
        $in = $ENV{'QUERY_STRING'};
	print "Submitted via GET<P>\n";
    }
    elsif ($ENV{'REQUEST_METHOD'} eq "POST") {
        read(STDIN, $in, $ENV{'CONTENT_LENGTH'}+1);
	print "Submitted via POST<P>\n";
    }

    $i = 0;
    @pairs = split(/&/, $in);

    foreach $pair (@pairs) {
# do the special character conversion
	$pair =~ tr/+/ /;
	$pair =~ s/%(..)/pack("c",hex($1))/ge;

	$pos = index($pair,"=");
	$name = substr($pair,0,$pos);
	$val = substr($pair,$pos+1);

	$i++;
	$entry{$name} = $val;

	print "$i: entry\{\"$name\"\} = $entry{$name}<BR>\n";
    }

    return 1;
}

sub InsertHeader {
    local ($htmltitle) = @_;
    print "Content-type: text/html\n\n";
    print "<HTML>\n<HEAD>\n<TITLE> "
    print "$htmltitle </TITLE>\n</HEAD>\n";
    print "<BODY>\n";
  
    return 1;
}

sub InsertTrailer {
    print "</BODY>\n</HTML>\n";

    return 1;
}

&InsertHeader; bezeichnet eine Funktion, die einen korrekten HTML Header erzeugt. &InsertTrailer; erzeugt den letzten Teil der HTML Seite. &Parse; zerlegt die CGI-Parameter wie im Abschnitt zu CGI besprochen.

Minimales CGI/Perl

Beispiele mit dem Script ex1-cgi.html

Zum Ausdrucken der Umgebungsvariablen klicken Sie hier.

Zum Ausdrucken der Umgebungsvariablen mit Querystring klicken Sie hier.

Das nächste Script benutzt ein Formular mit "Radio Buttons".

Mein Name:

Mein Status: Student Mitarbeiter Professor

Ein neues Formular mit "Check Boxen", "PopUp Selektoren" und "Textbereichen".

Mein Name:

Mein Status: Student Mitarbeiter Professor

Meine Hobbies: Fußball Reisen Lesen Computer

Perl mit Dekodierung

Beispiele mit dem Script ex2-cgi.html

Dieses Script gibt alle "name-value" Paare der QUERY_STRING Variable aus (GET Methode).

Mein Name:

Mein Status: Student Mitarbeiter Professor

Dieses Script gibt alle "name-value" Paare von stdin aus (POST Methode).

Mein Name:

Mein Status: Student Mitarbeiter Professor

Perl mit Mail

Beispiele mit dem Script ex3-cgi.html

Dieses Script schickt eine Email an den angegebenen Adressaten.

E-Mail Adresse:

Beispiele mit dem Script ex4-cgi.html

Perl mit Log-Datei

Dieses Script schreibt eine Nachricht in ein Log-File.

Mein Name:

Mein Status: Student Mitarbeiter Professor


© Universität Mannheim, Rechenzentrum, 1998/1999.