Möchte man das Ausgabeformat einer Eingabe (im Folgenden die Datei themen.txt) beeinflussen hilft einem format weiter.
Ausgabeformat
Dateien testen
Dateien können auf die unterschiedlichsten Sachen hin getestet werden. Dazu zählt insbesondere das Überprüfen, ob es diese Datei schon gibt (-e), um ein Überschreiben zu verhindern. Außerdem kann man auch testen, ob eine Datei überhaupt lesbar (-r) bzw. ausführbar (-x) ist und wann sie das letzte mal geändert (-M) wurde.
Eine Ausführliche Liste findet man hier. Und hier ein praktisches Beispiel:
Kontrollstrukturen II
Eine Ergänzung zu Kontrollstrukturen bzw. Schleifen, sind die Befehle last, redo und next .
Bedingungen und Schleifen/Kontrollstrukturen
Um nur unter bestimmten Bedingungen Teile eines Perlskriptes zu aktivieren, verwendet man die folgenden Ausdrücke: if ... else, if ... elsif ...else, unless, while, until, for, foreach. Hier einige Beispiele:
Subroutinen
Subroutinen rufen Anweisungen auf, die an einer anderen Stelle im Programm definiert werden. Dies geschieht meistens entweder am Ende oder am Anfang.
Subroutinen geben dabei immer ihren letzten Wert aus. Hier einige Beispiele für den Umgang mit Subroutinen:
Split und Join
Um eine Zeichenkette in einer Variablen aufzuteilen und sie in eine Liste bzw. ein Array einzufügen wird die Funktion split verwendet. Im folgenden wird aus $a immer @worte qw = ("Sahanya" "lernt" "PHP").
$a = "Sahanya-lernt-PHP"; entfernt Bindestriche
@worte = split (/-/,$a);
$a = "Sahanya lernt PHP"; entfernt Leerzeichen
#@worte = split (/\s+/,$a);
Arbeitet man mit der Standardvariable $_ und möchte dort Leerzeichen entfernen, geht das so:
$_ = "Sahanya lernt PHP";
@worte = split;
Umgekehrt kann man mit join auch Werte aus Listen bzw. Arrays durch Trennzeichen in eine Skalarvariable schreiben:
@worte = qw (
Sahanya
lernt
PHP
);
$a = join (" ",@worte);
Also ist jetzt $a = "Sahanya lernt PHP"
Ersetzen
Das Ersetzen von einzelnen Zeichen oder auch Mustern habe ich ja schon vereinzelt angesprochen, hier jetzt einige Ergänzungen:
$_= "Sahanya lernt PHP";#Sohanya lernt PHP (ersetzt wird nur das erste a)
s/a/o/;
print $_;
$_= "Sahanya lernt PHP";#Sohonyo lernt PHP (es werden alle as ersetzt)
s/a/o/g;
print $_;
$_= "Sahanya lernt PHP";#Sayanya lernt PHP (es werden alle hs ersetzt)
s/h/y/g;
print $_;
$_= "Sahanya lernt PHP";#Sayanya lernt PyP (es werden alle hs ersetzt, egal ob groß oder klein)
s/h/y/gi;
print $_;
$_= "Sahanya lernt PHP";#-Sahanya- -lernt- -PHP-
s/(\w+)/-$1-/g;
print $_;
Spezielle Variablen
Perl legt bestimmte Muster in Standard-Variablen ab, die sich allerdings immer wieder neu überschreiben.
Eingaben, die keiner speziellen Variablen zugeordnet werden, werden zu $_.
Möchte man nur Teile einer Variable ausgeben, kann das so aussehen:
#!\usr\bin\perl -w
$_ = "Sahanya versucht PHP zu lernen";
/v.{3}ucht/;
print "$`\n"; Ausgabe: Sahanya (der Ausdruck vor dem gesuchten Wort)
print "$&\n"; Ausgabe: versucht (das gesuchte Wort)
print "$'\n"; Ausgabe: PHP zu lernen (der Ausdruck hinter dem gesuchten Wort)
Muster
Verschiedene Muster können auf unterschiedliche Weise verwendet werden, z.B. um Ersetzungen vorzunehmen oder aber auch um diese in einer bestehenen Skalarvariable zu finden bzw. zu sehen, ob das Muster paßt ( =~ m/muster/) — m: match bzw. passen

