Perl-Programmierung: Variablenklassifizierung und Fallbeispiele

Aus Wikibooks
Wechseln zu: Navigation, Suche
Wikibooks buchseite.svg Zurück zu Variablen | One wikibook.svg Hoch zu Inhaltsverzeichnis | Wikibooks buchseite.svg Vor zu Spezialvariablen



Klassifizierung von Variablen[Bearbeiten]

Variablen können verschiedenste Aufgaben erfüllen. Eine Variable kann beispielsweise einen oder mehrere 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:

my $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 folgende 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.

Singularitäten[Bearbeiten]

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''

... ... ...


Wikibooks buchseite.svg Zurück zu Variablen | One wikibook.svg Hoch zu Inhaltsverzeichnis | Wikibooks buchseite.svg Vor zu Spezialvariablen