EMZETT.
Login

Kurz: Perl (Practical Extraction and Report Language) wurde 1987 von Larry Wall entwickelt, ursprünglich zum Auswerten von Textdateien.

Teil des Kurses Perl

Kapitel 1 von 11 im Kurs Perl. Mit Fortschritt, Quiz und Zertifikat auf der Lernseite.

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                          # Version

Das 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 Funktion

Immer 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:

SigilTypBeispiel
$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: 3

Kontext

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 Skalarkontext

Ausgabe:

3 10
Letzter Index: 2, Letztes: 30
Elemente: 3

Merke

  • 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

Weiter im Kurs

Weiter: Skalare, Zahlen und Strings

Alle Kapitel: Perl im Überblick