Login


 
Newsletter
Werbung

Mo, 6. September 1999, 00:00

Perl/CGI-Workshop, Teil 13

Diverse Tips&Tricks

So einen Workshop zu schreiben ist wirklich eine schwierige Angelegenheit. Da gibt es einige Kleinigkeiten, die man dem Leser unbedingt mitteilen möchte, die man aber in früheren Kapiteln nicht untergebracht hat, um diese nicht zu lang zu machen, und auf einmal kann man diese Kleinigkeiten nirgendwo mehr unterbringen. Deshalb schiebe ich dieses Kapitel ein, in das ich alles möglich reinstopfe. Das ist die wohl primitivste aber dennoch sinnvollste Lösung des Problems. :-)

Zuerst möchte ich Ihnen zwei echt coole Unterprogramme vorstellen, die Perl zur Bearbeitung von Zeichenketten bereithält. Die erste ist substr():

<em>#!/usr/bin/perl</em>
<em># substr.pl -- by W. Jährling</em>
$a = "Dies ist ein Test!";
$b = substr($a, 6, 3);
print "$b\n"; <em># Zeigt "ist\n" an.</em>
substr($a, 6, 3) = "war einmal";
print "$a\n"; <em># Zeigt "Dies war einmal ein Test!\n" an.</em>

Was BASIC-Programmierer unter MID$ kennen, nennt sich in Perl also substr(). Die nächste Funktion, die ich Ihnen vorstellen möchte, werden Sie allerdings in kaum einer anderen Programmiersprache finden, obwohl sie äußerst praktisch ist (was mal wieder die Überlegenheit von Perl zeigt ;-) ).

Die Funktion, von der ich rede, ist split(). Dieser Funktion übergibt man einen regulären Ausdruck(!) und eine Zeichenkette. split() nimmt den regulären Ausdruck als Begrenzer und schneidet den String in mehrere Teile, die dann als Array zurückgegeben werden. Das sieht dann z.B. so aus:

<em>#!/usr/bin/perl</em>
<em># split.pl -- by W. Jährling</em>
print "Gib Suchbegriffe ein, entweder durch\n";
print "Leerzeichen oder '+' getrennt:\n";
$tmp = <STDIN>;
chomp $tmp;
@keywords = split(/(\+| )/, $tmp);

Ab und an kommt es mal vor, dass man einen etwas längeren Text ausgeben möchte (bei CGI-Programmen kommt das sogar sehr häufig vor!). Eine komfortable Möglichkeit dazu bieten die HERE-Dokumente:

<em>#!/usr/bin/perl</em>
<em># here.pl -- by W. Jährling</em>
$wort = "ist";
print <<"END_OF_TEXT";
Dies $wort ein etwas längerer
Text, der sich sogar über
 mehrere Zeilen
 erstreckt, was doch
 eher selten
$wort.
END_OF_TEXT
print "Normaler Text\n";

Beachten Sie hierbei unbedingt die etwas seltsame Position des Semikolons.

Als nächstes ein kleines Wort zum Perl-Interpreter selbst. Sie sollten ihn normalerweise mit der Option -w aufrufen, was dazu führt, dass Sie immer dann eine Warnung angezeigt bekommen, wenn der Perl-Interpreter in Ihrem Code auf seltsame Dinge trifft, die vielleicht nicht unbedingt gewünscht waren. Dies kann nützlich sein, um Fehler zu finden.

In Zukunft werde ich in allen Quellcodes hier die Option -w verwenden.

Nun möchte ich Sie auf die "Default-variable" von Perl aufmerksam machen. An vielen Stellen können Sie in Perl einfach die Angabe einer Variablen weglassen, dann wird die Variable mit dem Namen $_ verwendet. Beispiel:

<em>#!/usr/bin/perl</em>
<em># default.pl -- by W. Jährling</em>
while (<STDIN>) {
 chomp;
 print "$_\n";
}

Zum Abschluss möchte ich Ihnen noch einen kleinen Diamanten vorstellen. Der Diamand-Operator von Perl wird aus zwei Gründen so genannt: Wegen seiner Form und wegen seiner Nützlichkeit.

Was dieser Operator macht, sieht man wohl am Besten an einem Beispiel. Programmieren wir also mal das Programm "cat" nach. Naja, es ist nur eine Mini-Version (nämlich ohne Optionen), aber es ist ein "cat":

<em>#!/usr/bin/perl</em>
<em># cat.pl -- by W. Jährling</em>
while (<>) { print $_; }

Dieses kleine Stückchen Code öffnet der Reihe nach alle Dateien, deren Namen dem Script am Prompt übergeben wurden und liefert jeweils eine Zeile. Wenn das Ende einer Datei erreicht ist, geht der Diamant-Operator zur nächsten über. Wurden keine Dateien angegeben, wird von der Standard-Eingabe gelesen.


[<< Zurück] [Weiter >>]
Kommentare (Insgesamt: 0 || Kommentieren )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung