mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2024-12-01 00:43:00 +03:00
0ecb826429
+ As the Perl 6 is renamed to raku, it is good to reflect that https://github.com/Raku/problem-solving/blob/master/solutions/language/Path-to-Raku.md + perl6.org is now raku.org + change references of perl 6 to raku + rename file perl6-pod.html.markdown to raku-pod.html.markdown + Perl refers to Perl 5, there is no ambiguity after rename of Perl6 to Raku, use Perl only to refer to Perl 5 + fix links inside raku.html.markdown
170 lines
4.7 KiB
Perl
170 lines
4.7 KiB
Perl
---
|
|
language: perl
|
|
filename: learnperl-de.pl
|
|
contributors:
|
|
- ["Korjavin Ivan", "http://github.com/korjavin"]
|
|
translators:
|
|
- ["Martin Schimandl", "http://github.com/Git-Jiro"]
|
|
lang: de-de
|
|
---
|
|
|
|
Perl ist eine sehr mächtige, funktionsreiche Programmiersprache mit über 25 Jahren Entwicklungsgeschichte.
|
|
|
|
Perl läuft auf über 100 Platformen von portablen Geräten bis hin zu Mainframes. Perl ist geeignet für Rapid-Prototyping und auch groß angelegte Entwicklungs-Projekte.
|
|
|
|
```perl
|
|
# Einzeilige Kommentare beginnen mit dem # Symbol.
|
|
|
|
|
|
#### Perl Variablen Typen
|
|
|
|
# Variablen beginnen mit einem Sigil, das ist ein Symbol das den Typ anzeigt.
|
|
# Ein erlaubter Variablen-Name beginnt mit einem Buchstaben oder einem
|
|
# Unterstrich, gefolgt von beliebig vielen weiteren Buchstaben, Zahlen und
|
|
# Unterstrichen.
|
|
|
|
### Perl hat drei Haupt-Typen von Variablen: $scalar, @array, und %hash.
|
|
|
|
## Scalare
|
|
# Ein Scalar repräsentiert einen einzelnen Wert:
|
|
my $animal = "camel";
|
|
my $answer = 42;
|
|
|
|
# Scalare Werte könnne Zeichenketten, Ganzzahlen und Gleitkomma-Zahlen sein.
|
|
# Perl convertiert automatisch zwischen diesen Werten wenn nötig.
|
|
|
|
## Arrays
|
|
# Ein Array repräsentiert eine Liste von Werten:
|
|
my @animals = ("camel", "llama", "owl");
|
|
my @numbers = (23, 42, 69);
|
|
my @mixed = ("camel", 42, 1.23);
|
|
|
|
|
|
|
|
## Hashes
|
|
# Ein Hash representiert ein Set von Schlüssel/Wert Paaren:
|
|
|
|
my %fruit_color = ("apple", "red", "banana", "yellow");
|
|
|
|
# Man kann Leerzeichen und den "=>" Operator verwenden um sie schön darzustellen:
|
|
|
|
my %fruit_color = (
|
|
apple => "red",
|
|
banana => "yellow",
|
|
);
|
|
# Scalare, Arrays und Hashes sind in perldata sehr genau dokumentiert.
|
|
# (perldoc perldata)
|
|
|
|
# Komplexere Daten-Typen können mit hilfe von Referenzen konstruiert werden.
|
|
# Dies erlaubt das erstellen von Listen und Hashes in Listen und Hashes.
|
|
|
|
#### Bedingte Ausführungs- und Schleifen-Konstrukte.
|
|
|
|
# Perl besitzt die üblichen Bedingte Ausführung- und Schleifen-Konstrukte
|
|
|
|
if ($var) {
|
|
...
|
|
} elsif ($var eq 'bar') {
|
|
...
|
|
} else {
|
|
...
|
|
}
|
|
|
|
unless (condition) {
|
|
...
|
|
}
|
|
# Dies ist die etwas leserliche Version von "if (!Bedingung)"
|
|
|
|
# Die Perl-Eigene Post-Bedingungs-Schreibweise
|
|
print "Yow!" if $zippy;
|
|
print "We have no bananas" unless $bananas;
|
|
|
|
# while
|
|
while (condition) {
|
|
...
|
|
}
|
|
|
|
|
|
# Für Schleifen und Iterationen
|
|
for (my $i = 0; $i < $max; $i++) {
|
|
print "index is $i";
|
|
}
|
|
|
|
for (my $i = 0; $i < @elements; $i++) {
|
|
print "Current element is " . $elements[$i];
|
|
}
|
|
|
|
for my $element (@elements) {
|
|
print $element;
|
|
}
|
|
|
|
# Implizite Iteration
|
|
for (@elements) {
|
|
print;
|
|
}
|
|
|
|
# Die Perl-Eigene Post-Bedingungs-Schreibweise nochmals
|
|
print for @elements;
|
|
|
|
#### Reguläre Ausdrücke
|
|
|
|
# Die Unterstützung von Perl für reguläre Ausdrücke ist weit und tiefgreifend.
|
|
# Sie ist ausführlich in perlrequick, perlretut und sonstwo dokumentiert.
|
|
# Die Kurzfassung:
|
|
|
|
# Einfaches Vergleichen
|
|
if (/foo/) { ... } # Wahr wenn "foo" in $_ enthalten ist
|
|
if ($a =~ /foo/) { ... } # Wahr wenn "foo" in $a enthalten ist
|
|
|
|
# Einfache Substitution
|
|
|
|
$a =~ s/foo/bar/; # Ersetzt foo mit bar in $a
|
|
$a =~ s/foo/bar/g; # Ersetzt ALLE VORKOMMNISSE von foo mit bar in $a
|
|
|
|
|
|
#### Dateien und Ein-/Ausgabe
|
|
|
|
# Dateien werden mit der "open()" Funktion zur Ein- oder Ausgabe geöffnet.
|
|
|
|
open(my $in, "<", "input.txt") or die "Can't open input.txt: $!";
|
|
open(my $out, ">", "output.txt") or die "Can't open output.txt: $!";
|
|
open(my $log, ">>", "my.log") or die "Can't open my.log: $!";
|
|
|
|
# Von einem geöffneten Datei-Handle kann mit dem "<>" Operator gelesen werden.
|
|
# In einem Scalaren-Kontext liest man damit eine einzelnen Zeile vom Datei-Handle.
|
|
# In einem Listen-Kontext wird damit die komplette Datei eingelesen. Dabei
|
|
# entspricht jede Zeile einem Element der Liste:
|
|
|
|
my $line = <$in>;
|
|
my @lines = <$in>;
|
|
|
|
#### Schreiben von Subroutinen
|
|
|
|
# Subroutinen schreiben ist einfach:
|
|
|
|
sub logger {
|
|
my $logmessage = shift;
|
|
|
|
open my $logfile, ">>", "my.log" or die "Could not open my.log: $!";
|
|
|
|
print $logfile $logmessage;
|
|
}
|
|
|
|
# Nun können wir die Subroutine genau wie eine eingebaute Funktion verwenden:
|
|
|
|
logger("We have a logger subroutine!");
|
|
```
|
|
|
|
#### Verwenden von Perl Modulen
|
|
|
|
Perl Module liefern eine Menge an Funktionen die dabei Helfen das Rad nicht neu erfinden zu müssen. Perl Module können von CPAN (http://www.cpan.org/) heruntergeladen werden. Einige populäre Module sind in der Perl Distribution selbst bereits enthalten.
|
|
|
|
Perlfaq enthält Fragen und Antworten zu häufig vorkommenden Aufgaben. Sehr oft sind auch Vorschläge enthalten welches CPAN module am besten geeignet ist.
|
|
|
|
#### Weiterführende Literatur
|
|
|
|
- [perl-tutorial](http://perl-tutorial.org/)
|
|
- [Learn at www.perl.com](http://www.perl.org/learn.html)
|
|
- [perldoc](http://perldoc.perl.org/)
|
|
- in Perl eingebaut : `perldoc perlintro`
|