EMZETT.
Login

Kurz: - Dokumentation: perldoc perlintro, perldoc perlfunc, perldoc.perl.org - Bücher: Learning Perl (“Das Lama”), Modern Perl (kostenlos online) - Übungen: Rosetta Code, Exercism (Perl-Track), PerlMonks (Forum) - Webentwicklung.

Teil des Kurses Perl

Kapitel 11 von 11 im Kurs Perl (Abschnitt „Nachschlagen“). Mit Fortschritt, Quiz und Zertifikat auf der Lernseite.

Variablen und Operatoren

ThemaSyntax
Skalar / Array / Hash$x, @a, %h
Element$a[0], $h{key}, $r->[0], $r->{key}
Länge / letzter Indexscalar(@a), $#a
Zahlen vergleichen== != < > <= >= <=>
Text vergleicheneq ne lt gt le ge cmp
Logik&& || ! // and or not
Verketten / wiederholen. und x
Bereich1..10, 'a'..'e'

Wichtige Funktionen

BereichFunktionen
Textlength substr index rindex uc lc ucfirst lcfirst reverse join split sprintf chomp chop chr ord lc
Listenpush pop shift unshift splice sort reverse map grep wantarray scalar
Hasheskeys values each exists delete
Zahlenabs int sqrt sin cos atan2 exp log hex oct rand srand
Dateienopen close print printf eof binmode unlink rename mkdir opendir readdir
Systemsystem exec fork wait kill sleep time localtime gmtime exit die warn

Reguläre Ausdrücke

$s =~ /muster/flags       $s =~ s/alt/neu/flags       $s =~ tr/a-z/A-Z/
Flags: i g m s x e r      Gruppen: (…) (?:…) (?<name>…)      Zugriff: $1 $2 $+{name} $& $` $'
\d \w \s \b . ^ $ * + ? {n,m} [abc] [^abc] a|b     nicht gierig: *? +? ??

Spezialvariablen

VariableBedeutung
$_Standardvariable
@_Argumente einer Subroutine
$0Skriptname
@ARGV, %ENVKommandozeilenargumente, Umgebung
$!Fehlertext des Systems
$@Fehler aus eval
$.Zeilennummer der letzten Eingabe
$, $" $/ $\Trennzeichen (Ausgabe, Liste, Eingabe, Zeilenende)
$a, $bin sort

Einzeiler

perl -ne 'print if /fehler/i' log.txt                  # grep
perl -pe 's/alt/neu/g' datei                           # sed
perl -pi -e 's/alt/neu/g' *.txt                        # direkt in Dateien ersetzen
perl -lane 'print $F[2]' datei                         # dritte Spalte (awk)
perl -F: -lane 'print $F[0]' /etc/passwd               # anderes Trennzeichen
perl -ne '$s += $_; END { print "$s\n" }' zahlen.txt   # Summe
perl -le 'print for reverse 1..5'
perl -MList::Util=max -le 'print max(3, 9, 4)'
perl -0777 -ne 'print length' datei                    # Zeichen zählen

Häufige Fehler

Meldung / ProblemUrsache
Global symbol "$x" requires explicit package nameVariable ohne my deklariert (strict)
Use of uninitialized valueundef in Rechnung oder Text
Can't locate Modul.pm in @INCModul nicht installiert: cpanm Modul
Can't call method "x" on an undefined valueObjekt ist undef (Fehler vorher prüfen)
Can't use string as a HASH refReferenz erwartet, Text bekommen
== auf Texteneq benutzen
Hash-Reihenfolge wechseltimmer sort keys %h
Odd number of elements in hash assignmentungerade Anzahl Werte
Datei nicht gefundenor die "...: $!" zeigt den Grund

Weiterlernen

  • Dokumentation: perldoc perlintro, perldoc perlfunc, perldoc.perl.org
  • Bücher: Learning Perl (“Das Lama”), Modern Perl (kostenlos online)
  • Übungen: Rosetta Code, Exercism (Perl-Track), PerlMonks (Forum)
  • Webentwicklung: Mojolicious, Dancer2

Merke

  • use strict; use warnings; und my immer
  • Kontext (Liste vs. Skalar) verstehen, eq für Text, == für Zahlen
  • Reguläre Ausdrücke und Einzeiler sind Perls Stärke
  • Module von CPAN, Tests mit Test::More

Quiz zur Selbstkontrolle

Weiter im Kurs

Zurück: Objektorientierung und Tests

Alle Kapitel: Perl im Überblick