Kurz: Perl (Practical Extraction and Report Language) wurde 1987 von Larry Wall entwickelt, ursprünglich zum Auswerten von Textdateien.
Teil des Kurses Perl
Was ist Perl?
Perl (Practical Extraction and Report Language) wurde 1987 von Larry Wall entwickelt, ursprünglich zum Auswerten von Textdateien. Perl glänzt bei Textverarbeitung und regulären Ausdrücken, ist ein Klassiker der Systemadministration und der Bioinformatik und steckt in vielen Altsystemen. Das Motto: There’s more than one way to do it (TMTOWTDI).
Perl 5 ist die verbreitete Version; “Perl 6” heißt heute eigenständig Raku.
Ausführen
perl hallo.pl # Datei
perl -e 'print "Hallo\n"' # Einzeiler
perl -ne 'print if /fehler/i' log.txt # Zeilenfilter (wie grep)
perl -pe 's/alt/neu/g' datei # Filter und Ersetzen (wie sed)
perl -v # VersionDas erste Skript
hallo.pl
#!/usr/bin/perl
use strict; # Variablen müssen deklariert werden
use warnings; # Warnungen bei verdächtigem Code
use utf8; # Quelltext ist UTF-8
binmode(STDOUT, ":utf8"); # Ausgabe als UTF-8
my $name = "Mia";
print "Hallo, $name!\n";
print 'Einfache Quotes ersetzen nichts: $name', "\n";
printf("%s ist %d Jahre alt\n", $name, 17);
say_hallo();
sub say_hallo { print "Hallo aus einer Funktion\n"; }Ausgabe:
Hallo, Mia!
Einfache Quotes ersetzen nichts: $name
Mia ist 17 Jahre alt
Hallo aus einer FunktionImmer use strict; use warnings; an den Anfang: Das fängt Tippfehler und viele Fehler ab. Anweisungen enden mit ;, Kommentare beginnen mit #.
Sigils: Zeichen vor dem Namen
Der erste Buchstabe verrät den Variablentyp:
| Sigil | Typ | Beispiel |
|---|---|---|
$ | Skalar (ein Wert: Zahl, Text, Referenz) | $name, $liste[0] |
@ | Array (Liste) | @liste |
% | Hash (Zuordnung) | %alter |
& | Funktion (selten nötig) | &funktion |
use strict; use warnings;
my $zahl = 42;
my @liste = (1, 2, 3);
my %hash = (a => 1);
print "Skalar: $zahl, Array: @liste, Hash-Wert: $hash{a}, Element: $liste[1]\n";
print "Länge der Liste: ", scalar(@liste), "\n";Ausgabe:
Skalar: 42, Array: 1 2 3, Hash-Wert: 1, Element: 2
Länge der Liste: 3Kontext
Perl wertet Ausdrücke je nach Umgebung unterschiedlich aus (Listenkontext vs. Skalarkontext). Ein Array im Skalarkontext liefert seine Länge:
use strict; use warnings;
my @a = (10, 20, 30);
my $anzahl = @a; # Skalarkontext: Anzahl
my ($erstes) = @a; # Listenkontext: erstes Element
print "$anzahl $erstes\n";
print "Letzter Index: $#a, Letztes: $a[-1]\n";
print "Elemente: " . @a . "\n"; # . erzwingt SkalarkontextAusgabe:
3 10
Letzter Index: 2, Letztes: 30
Elemente: 3Merke
- Perl ist stark in Text und regulären Ausdrücken
- Immer
use strict; use warnings; - Sigils:
$Skalar,@Array,%Hash - Kontext: Array im Skalarkontext = Länge
- Einzeiler:
perl -ne,perl -pe
Übungsaufgabe
Schreibe ein Skript, das deinen Namen und die Länge deines Namens ausgibt.
Quiz zur Selbstkontrolle
Welches Zeichen steht vor einer Array-Variable?
- @ (richtig)
- $
- %
- &
Wofür sind use strict und use warnings?
- Sie fangen Tippfehler und riskanten Code ab (richtig)
- Sie machen Perl schneller
- Sie importieren Module
- Sie sind veraltet
Was ergibt my $n = @liste;?
- Die Anzahl der Elemente (richtig)
- Das erste Element
- Das letzte Element
- Eine Kopie
Weiter im Kurs
Weiter: Skalare, Zahlen und Strings
Alle Kapitel: Perl im Überblick