Practical Extraction and Report Language


Perl


Inhalt

  1. Einleitung
  2. Sprachkonstrukte
  3. CGI Beispiel




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" + "45" 
       33  . 44


Variablen

Beispiel

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

Beispiel

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

Beispiel

       $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 Beispiel

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> $htmltitle </TITLE>\n</HEAD>\n";
    print "<BODY>\n";
  
    return 1;
}

sub InsertTrailer {
    print "</BODY>\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.