[JoGu]

Kryptologie

Perl-Steilkurs

a7Hzq .#5r<
kÜ\as TâÆK$
ûj(Ö2 ñw%h:
Úk{4R f~`z8
¤˜Æ+Ô „&¢Dø

$a »skalare« Variable (Zahl, Zeichenkette).
[Perl wertet den Kontext aus; explizite Deklaration unnötig.]
$a = 5; Zuweisung einer Zahl.
[Anweisungen werden mit »;« abgeschlossen.]
$a = "Dies ist ein Text."; Zuweisung einer Zeichenkette.

$a = <FILE>; Auslesen einer Zeile aus einer Datei.
$a = <STDIN>; Auslesen einer Zeile aus der Standard-Eingabe.
$a = <>; Auslesen einer Zeile aus der aktuellen Datei;
voreingestellt ist die Standard-Eingabe.
$_ = <FILE>; Zeile wird der »aktuellen Variablen« $_ zugewiesen.

while ($a = <>) {...} Zeile wird der Variablen $a zugewiesen;
Bedingung ist wahr, wenn noch eine Zeile da, falsch, wenn Dateiende erreicht.
[Anweisungsblöcke werden in geschweifte Klammern eingeschlossen.]
while (<>) {...} äquivalent zu while ($_ = <>) {...}

$a =~ tr/ABC/XYZ/; Ausführung eines String-Operators auf $a,
hier tr = »translation operator« = monoalphabetische Substitution
A --> X, B --> Y, C --> Z
tr/ABC/XYZ/; äquivalent zu $_ =~ tr/ABC/XYZ/;
tr/ABC/$a/; A --> $, B --> a, C --> $
eval "tr/ABC/$a/"; Zur Laufzeit wird erst $a ausgewertet,
z. B. $a = "XYZ";
dann tr ausgeführt,
also im Beispiel: A --> X, B --> Y, C --> Z

print $a; Standard-Ausgabe; äquivalent ist print(STDOUT,$a);
print; äquivalent zu print $_;


Die Stärke von Perl liegt in Programmen, die eine (Text-) Datei Zeile für Zeile einlesen, die Zeile irgendwie transformieren und dann wieder abspeichern. Ein typisches Programm dafür sieht dann so aus:

while (<>) { # Lies ein, wenn noch etwas da ist,
  ...;       # transformiere
  print;     # und gib aus.
  }

Autor: Klaus Pommerening, 26. Oktober 1999; letzte Änderung: 30. Oktober 2007.