Perl-Programmierung: Variablenklassifizierung und Fallbeispiele
Aus Wikibooks
[Bearbeiten] Klassifizierung von Variablen
Variablen können verschiedenste Aufgaben erfüllen. Eine Variable kann beispielsweise einen oder mehere Werte enthalten. Perl unterscheidet Variablen anhand von Typkennzeichen, den Sigilien. Variablen die einen Wert enthalten werden Skalare genannt und mit einem $ gekennzeichnet. Variablen mit einer geordneten Liste von Werten werden Arrays genannt und mit einem @ gekennzeichnet.
Eine skalare Variable kann z.B. einen String enthalten. Das Hello World-Beispiel kann also auch so aussehen:
$ausgabe = "Guten Morgen, Welt!\n"; # Variable setzen print $ausgabe; # Variablen ausgeben
Wenn Sie aufgepasst haben, werden Sie feststellen, dass die Variable $ausgabe nicht deklariert worden ist. Perl erkennt automatisch anhand des $-Zeichens, dass es sich um eine skalare Variable handelt. Die Funktion print gibt dann den Wert der Variablen aus.
Eine Array-Variable beginnt stattdessen mit einem @-Zeichen. (Wenn Sie nun Array und Skalar gar nicht auseinander halten können, versuchen Sie mal folgender Eselsbrücke: $ = $(s)kalar @ = @(a)rray Man kann sich hier sehr einfach das $ als s vorstellen und das @ als a.)
Perl besitzt aber noch mehr Variablentypen, wie z.B. Hash, handle, typeglob, und allen wird zur Unterscheidung ein Typkennzeichen vorangestellt. Hier eine kleine Liste aller Typkennzeichen, denen Sie bei Perl begegnen werden.
| Typ | Kennzeichen | Beispiel | Ist ein Name für: |
|---|---|---|---|
| Skalar | $ | $bsp | Ein individueller Wert (Zahl oder String) |
| Array | @ | @test | Eine Liste von Werten mit einer Ganzahl als Index |
| Hash | % | %zinsen | Ein Gruppe von Werten mit einem String als Index |
| Subroutine | & | &was | Ein aufrufbares Stück Perl-Code |
| Typeglob | * | *maus | Alles namens maus |
Aber jetzt nicht zurückschrecken. Die Variablen können ohne weiteres und ohne besondere Syntax einfach umgewandelt werden. Perl-Scripte sind verhältnismäßig einfach zu lesen, weil Hash gegen Array etc. schnell heraussticht.
[Bearbeiten] Singularitäten
So wie Sie vorher gesehen haben, können Sie Skalaren mit dem Operator einen neuen Wert zuweisen. Skalaren kann jede Form von skalaren Werten zugewiesen werden.
- Undefinierter Wert
- Integer (ganze Zahlen)
- Fließkommazahlen
- Strings (Zeichenfolgen)
- Referenzen auf Subroutinen
- etc.
Wie bei der Shell bei Unix, können Sie verschiedene Quoting-Mechanismen verwenden, um Werte zu erzeugen. hier einige Beispiele
my $unbekannt = undef # undefinierter Wert my $sechs_mal_neun = 54; # eine ganze Zahl my $pi = 3.14159265; # eine rationale Zahl my $chem = 93.5ds2; # wissenschaftliche Notation my $tier = 'hund'; # String my $test = "ich habe einen $tier"; # String mit Interpolation my $preis = 'kosten 255€'; # String ohne Interpolation my $abc = $preis; # Wert einer anderen Variable my $bild = $rahmen * $wand; # ein Ausdruck my $exit = system("vi $file"); # numerischer Status eines Befehls my $cwd = `cwd`; # Textausgabe eines Befehls
Nicht verzweifeln. Das sieht komplizierter aus, als es wirklich ist. Hiermit wollte ich nur verdeutlichen, dass ein Skalar sehr viel enthalten kann. Aber es kann noch mehr, wie z.B. Referenzen auf andere Datenstrukturen, Subroutinen und Objekte.
my $ary = \@array; # Referenz auf ein bekanntes Array my $hsh = \%hash; # Referenz auf einen bekannten Hash my $sub = \&was; # Referenz auf eine bekannte Subroutine my $ary = [1,2,3,4,5]; # Referenz auf ein nicht benanntes Array my $hsh = {AP => 20, HP =>2}; # Referenz auf einen nicht benannten Hash my $sub = sub { print $zeit }; # Referenz auf eine nicht benannte Subroutine my $fido = neuer Hund 'Boss'; # Referenz auf ein Objekt, ''neuer'' ist eine Methode im Namensraum ''Hund''
... ... ...