Perl-Grundlagen: Ein Crashkurs für CGI-Entwickler

12

Perl ist eine Skriptsprache. Es ist alt. Es wird respektiert. Es ist überall. Wenn Sie Ende der 90er Jahre jemals ein CGI-Skript gesehen haben, das eine einfache Webanwendung ausführt, haben Sie sich Perl angesehen.

Es macht zwei Dinge gut. Erstens ersetzt es DOS-Batchdateien und C-Shell-Skripte. Zweitens betreibt es Webserver. Das ist der Kontext, der jetzt zählt.

Die gute Nachricht? Der Quellcode ist kostenlos. Entwickler verraten es. Sie können Tausende von Skripten herunterladen. Sie können sie studieren. Du kannst sie brechen.

Die schlechte Nachricht? Ein Großteil dieses Codes ist unlesbar. Perl fördert einen Stil, der so kryptisch ist, dass er an Verschleierung grenzt. Wenn Sie nicht wissen, was Sie tun, wissen Sie auch nicht, was Sie lesen.

In dieser Anleitung wird davon ausgegangen, dass Sie bereits programmieren. Wenn Sie C kennen, sind Sie vorne. Wenn nicht, beginnen Sie hier. Wir überspringen die Philosophie. Wir kommen zur Syntax.

Den Dolmetscher zum Laufen bringen

Sie benötigen den Perl-Interpreter.

Wenn Sie unter UNIX arbeiten, ist es wahrscheinlich vorhanden. 99,99 % Chance. Überprüfen Sie Ihr Terminal.

Wenn Sie Windows oder Mac verwenden, besuchen Sie die offizielle Website. Laden Sie die neueste Version herunter. Installieren Sie es. Perl ist kostenlos. Es ist Open Source. Es gibt es seit 1987. Denken Sie nicht zu viel über die Installation nach.

Suchen Sie nach der Installation das DOCS-Verzeichnis. Es kommt mit dem Paket. Scannen Sie es. Lesen Sie noch nicht jedes Wort. Es ist dicht. Es ist trocken. Aber es ist korrekt. Sie werden es später brauchen, wenn die Grundlagen keinen Sinn mehr ergeben.

Dein erstes Skript

Legen Sie Ihren Weg fest. Fügen Sie die ausführbare Perl-Datei hinzu. Öffnen Sie einen Texteditor. Erstellen Sie eine Datei mit dem Namen „test1.pl“.

Geben Sie Folgendes ein:

„Perl
print „Hallo Welt!\n“;

Speichern Sie es. Öffnen Sie Ihre Eingabeaufforderung. Typ:

„Bash
perl test1.pl

Sie sehen „Hallo Welt!“ auf dem Bildschirm. Das ist Standard. Das ist die Standardausgabe.

Unter UNIX können Sie „#!/usr/bin/perl“ zur ersten Zeile hinzufügen. Dann können Sie einfach „./test1.pl“ eingeben. Reiniger. Schneller.

Der Befehl „print“ gibt die Ausgabe auf stdout aus. Das „\n“ ist ein Zeilenvorschub. Einfach.

Versuchen Sie Folgendes:

„Perl
print “Hallo\nWelt!\n”;

Zwei Zeilen. Ein Befehl.

Warum hat es funktioniert? Wegen doppelter Anführungszeichen. In Perl lösen doppelte Anführungszeichen eine Anführungszeichen -Interpretation aus. Es analysiert Escape-Zeichen.

Einfache Anführungszeichen verwenden?

„Perl
print ‘Hallo\nWelt!\n’;

Jetzt sehen Sie wörtlichen Text. „\n“ bleibt als „\n“. Keine Interpretation. Keine Magie.

Es gibt auch das Backquote-Zeichen: `.

„Perl
print cmd /c dir ;

Dadurch wird ein Betriebssystembefehl ausgeführt. Die Ausgabe wird auf dem Bildschirm gedruckt. Unter Windows ist „cmd /c“ erforderlich. „dir“ ist keine ausführbare Datei. Es handelt sich um einen integrierten Befehl des Befehlsinterpreters.

Wenn Sie unter Windows NT versuchen, „print ‘dir’;“ zu drucken, schlägt dies fehl. Sie benötigen die Hüllenhülle.

Beachten Sie das Zeichen „/“. Es wird für reguläre Ausdrücke verwendet. Sie werden es überall sehen.

„print“ akzeptiert Kommas als Trennzeichen:

„Perl
print ‘hello’, “\n”, ‘world!’;

Es benötigt auch Punkte als Verkettungsoperatoren:

„Perl
„Hallo“ drucken. “\N” . ‘Welt!’;

Der Punkt verbindet Zeichenfolgen. Das Komma trennt Argumente.

C-Programmierer werden „printf“ mögen. Es funktioniert genau wie C.

Variablen und Datentypen

Perl-Variablen benötigen keine Deklaration. Sie existieren in dem Moment, in dem Sie sie zuweisen.

Verwenden Sie immer das Symbol $.

„Perl
$s = “Hallo\nWelt\n”;
$t = ‘Hallo\nWelt\n’;
print $s, “\n”, $t;

Doppelte Anführungszeichen interpretieren Escapezeichen. Einfache Anführungszeichen tun dies nicht.

Zahlen funktionieren auch.

„Perl
$i = 5;
$j = $i + 5;
print $i, “\t”, $i + 1, “\t”, $j;

„\t“ ist ein Tab. Perl kümmert sich darum.

Bei der Zeichenfolgenverkettung wird der Punkt verwendet:

„Perl
$a = “Hallo “;
$b = “Welt\n”;
$c = $a . $b;
$c drucken;

Kurzschrift existiert. „.=“ funktioniert wie „+=“.

„Perl
$a = “Hallo “;
$b = “Welt\n”;
$a .= $b;
$a drucken;

Arrays

Arrays beginnen mit @.

„Perl
@a = (‘Katze’, ‘Hund’, ‘Aal’);
print @a, “\n”;
print $#a, “\n”; # Höchster Index
print $a[0], “\n”;
print $a[0], $a[1], $a[2], “\n”;

Arrays sind nullindiziert. Wie C. Wie Java. Wie Python.

Die Notation „$#a“ gibt Ihnen den höchsten Index. Nicht die Zählung. Der Index. Wenn Sie also drei Elemente haben, ist „$#a“ 2.

Hashes

Hashes beginnen mit %. Es handelt sich um Schlüssel-Wert-Paare.

„Perl
%h = (‘dog’, ‘bark’, ‘cat’, ‘miau’, ‘aal’, ‘zap’);
print „Der Hund sagt“, $h{‘dog’};

„Bar“ ist mit „Hund“ verknüpft. „miauen“ bis „Katze“.

Es gibt eine sauberere Syntax. Der => -Operator.

„Perl
%h = ( dog => ‘bark’, cat => ‘miau’, eel => ‘zap’ );

Es zitiert die linke Seite. Es fungiert als Komma. Es macht Code lesbar. Benutze es.

Perl ist einfach, wenn man aufhört, sich mit der Syntax herumzuschlagen. Die Grundlagen sind unkompliziert. Bei den fortgeschrittenen Dingen wird es seltsam. Bleiben Sie beim Kern. Beherrschen Sie die Variablen. Beherrschen Sie die Zitierregeln.

Der Rest sind nur Muster. Und schlechte Gewohnheiten.

Wenn Sie sich schon einmal mit C beschäftigt haben, wird Ihnen die Syntax von Perl bekannt vorkommen. Es lehnt sich stark an diese Linie an, lockert aber die Strenge.

Nehmen Sie eine for -Schleife. Es sieht genau so aus, wie Sie es erwarten:

„Perl
for ($i = 0; $i < 10; $i++) { print $i, "\n"; } „

Für einfachere Iterationen können Sie sich auch auf while -Anweisungen stützen. Hier erhöht sich die Variable innerhalb des Blocks:

„Perl
$i = 0;
while ( $i < 10 ) { print $i, "\n"; $i++; } „

Logikgatter folgen den gleichen Regeln wie C. Verwenden Sie && für „und“, || für „oder“ und ! für „nicht“.

Hinweis: Perl bietet einen zweiten Satz Vergleichsoperatoren für Strings. Während „==“ die numerische Gleichheit prüft, prüft „eq“ die String-Gleichheit.

Die numerischen Operatoren bleiben Standard:
== (gleich)
!= (nicht gleich)
<, <=, >, >=

Wenn Sie jedoch mit Text arbeiten, bevorzugen Sie möglicherweise die wortbasierten Alternativen:
eq (gleich)
ne (nicht gleich)
lt (weniger als)
le (kleiner oder gleich)
gt (größer als)
ge (größer oder gleich)

Durch Arrays iterieren

Das Durchlaufen einer Sammlung in Perl ist dank foreach sauber. Es weist jedes Element eines Arrays nacheinander einer Skalarvariablen zu.

„Perl
@a = (‘Hund’, ‘Katze’, ‘Aal’);
foreach $b (@a) {
print $b, “\n”;
}

Hier nimmt „$b“ den Wert von „Hund“ an, dann von „Katze“ und dann von „Aal“. Die Schleife endet, wenn das Array „@a“ erschöpft ist.

Die Klammerregel

In Perl gibt es eine nicht verhandelbare Syntaxregel: geschweifte Klammern.

Sie müssen { und } verwenden, um Codeblöcke zu umbrechen, auch wenn der Block nur eine einzelne Zeile enthält.

„Perl
if ($i != 5) { print $i, “\n”; }

Überspringen Sie die geschweiften Klammern, und der Compiler wird sich beschweren.

Unterprogramme schreiben

Funktionen in Perl werden mit dem Schlüsselwort sub definiert.

Wenn Sie eine Unterroutine aufrufen, werden alle an sie übergebenen Argumente in ein spezielles Array namens @_ gestopft.

„Perl
show (‘Katze’, ‘Hund’, ‘Aal’);

Untershow {
for ($i = 0; $i <= $#; $i++) {
print $
[$i], “\n”;
}
}

Die Variable $#_ gibt den höchsten Index des Arrays @_ zurück. Da Arrays nullindiziert sind, ergibt sich daraus effektiv die Anzahl der Parameter minus eins.

Es ist etwas umständlich, aber wenn man sich erst einmal daran gewöhnt hat, ist es effizient.

Variablenbereich und Rückgabewerte

Um eine Verschmutzung des globalen Namespace innerhalb einer Funktion zu vermeiden, deklarieren Sie lokale Variablen mit dem Schlüsselwort local.

„Perl
Unter xxx {
lokal ($a, $b, $c) …
}

Sie können eine Funktion auch explizit mit dem Symbol & aufrufen.

„Perl
&show (‘a’, ‘b’, ‘c’);

Technisch gesehen ist & nur erforderlich, wenn im Parser Unklarheiten bestehen. Aber viele Entwickler verwenden es aus Gewohnheit, um explizit zu sein.

Um ein Ergebnis an den Anrufer zurückzusenden, verwenden Sie das Schlüsselwort return.

Eingabe und Ausgabe

Das Lesen aus dem Standardeingabestream (STDIN ) ist unkompliziert. Der spitze Klammeroperator liest jeweils eine Zeile.

„Perl
print „Geben Sie eine hohe Zahl ein:“;
$i = ;

für ($j = 0; $j <= $i; $j++) { print $j, "\n"; } „

Dies setzt voraus, dass die Eingabe eine gültige Ganzzahl ist. Wenn der Benutzer Müll eingibt, bricht die Logik zusammen.

Für die Eingabe einzelner Zeichen verwenden Sie getc :

„Perl
$i = getc(STDIN);

Oder verwenden Sie die Funktion read, die die Länge der zu erfassenden Eingabe angibt.

„Perl
read(STDIN, $i, 1);

Die „1“ am Ende gibt vor, dass nur ein Zeichen gelesen wird.

Umgebungs- und Befehlszeilendaten

Perl macht Systemdaten über globale Variablen verfügbar.

Der %ENV -Hash enthält alle Umgebungsvariablen. Denken Sie daran, dass die Schlüssel in Großbuchstaben geschrieben sein müssen.

„Perl
print $ENV{‘PATH’};

Wenn Sie auf Befehlszeilenargumente zugreifen müssen, sehen Sie sich das Array @ARGV an.

  • „$ARGV[0]“ ist das erste Argument.
  • „$ARGV[1]“ ist der zweite.
  • „$#ARGV“ gibt Ihnen den Index des letzten Arguments (Anzahl minus eins).

Dies macht es einfach, Skripte zu erstellen, die dynamische Eingaben akzeptieren, ohne Werte fest zu codieren.

Ist Perl immer noch relevant?

Das ist eine berechtigte Frage. Verwenden Programmierer immer noch Perl? Ja.

Wird Perl im Jahr 2024 noch verwendet? Ja, obwohl sich seine Rolle verändert hat. Es handelt sich um eine universell einsetzbare, interpretierte und dynamische Sprache auf hohem Niveau. Es dominiert neue Greenfield-Webprojekte nicht so wie Python oder Node.js.

Perl bleibt jedoch ein Kraftpaket für die Systemadministration und Legacy-Wartung. Es zeichnet sich durch Textverarbeitung und schnelle Skripterstellung aus