Perl - Spezielle Variablen

[ <= ] [ HOME ] [ INHALT ] [ INDEX ] [ => ]

Einführung

Es gibt in Perl einige reservierte Variablen, die Informationen über aktuelle Einstellungen geben und die auch dazu verwendet werden können, einige dieser Einstellungen zu verändern, indem die Variablen entsprechend gesetzt werden.

Verwendet man das English-Modul der Standard-Bibliothek ("use English;"), so stehen auch begriffliche Namen dieser Variablen zur Verfügung (sie sind in der folgenden Liste in Klammern angegeben).

Anmerkung: Einige der Variablen liefern auf Nicht-UNIX-Betriebssystemen nicht unbedingt sinnvolle Werte (wenn überhaupt), falls die jeweils zugrundeliegende Funktion (z.B. Verwendeung von Benutzer-IDs) nicht zur Verfügung steht.


[ <- ] [ HOME ] [ INHALT ] [ INDEX ] [ -> ]

Die Variable $_

Wenn beispielsweise bei einem Funktionsaufruf der Rückgabewert nicht explizit einer Variablen zugewiesen wird, so wird er oft doch gespeichert, und zwar in der Variablen "$_". Auch können eine Reihe von Funktionen (die eigentlich ein Argument erwarten) ohne Argument aufgerufen werden - es wird dann stillschweigend der Inhalt von $_ übergeben. $_ ist also so etwas wie eine Variable, die temporär Daten aufnimmt, und es daher erlaubt, Funktionsaufrufe miteinander zu verketten, ohne jedesmal explizit Zuweisungen an Variablen vornehmen zu müssen, die sonst nirgendwo im Programm gebraucht werden.

Beispiel:

#!/usr/local/bin/perl -w

$string = 'Hallo';
chop($string);
print $string;
print "\n";

$_ = 'Hallo';
chop($_);
print $_;
print "\n";

$_ = 'Hallo';
chop;
print;
print "\n";

Während im ersten Teil eine Variable namens $string verwendet wird, um den Text zu speichern und die anschließenden Funktionsaufrufe durchzuführen, zeigt das zweite Beispiel, daß man als Variable genausogut $_ verwenden kann. Der dritte Teil demonstriert, wie bei Aufruf der Funktion chop ohne Argument standardmäßig der Inhalt von $_ übergeben wird und das Ergebnis wiederum in $_ landet. Schließlich wird der Inhalt von $_ mit der Funktion print (ebenso ohne Argument) ausgegeben.

Auch wenn im obigen Beispiel $_ wie eine normale Variable verwendet wird, gibt es ein doch ein paar Unterschiede; so ist $_ auch über package-Deklarationen hinweg global, und sie läßt sich auch nicht mit my in einer Subroutine lokalisieren.

Ein weiteres Beispiel:

#!/usr/local/bin/perl -w

@array = ('a', 'b', 'c');

foreach (@array) {
    tr/a-z/A-Z/;
    print;
}
ABC

Da hier bei foreach keine Laufvariable angegeben ist, wird $_ angenommen. $_ erhält also nacheinander die Werte "a", "b" und "c". Im Inneren der Schleife wird die Funktion tr auf $_ angewandt (ausführlich sähe dies so aus: $_ =~ tr/a-z/A-Z/;), die hier die Kleinbuchstaben von a bis z durch die entsprechenden Großbuchstaben ersetzt.


[ <- ] [ HOME ] [ INHALT ] [ INDEX ] [ -> ]

Allgemeine Informationen


[ <- ] [ HOME ] [ INHALT ] [ INDEX ] [ -> ]

PID,UID,GID


[ <- ] [ HOME ] [ INHALT ] [ INDEX ] [ -> ]

Fehlermeldungen


[ <- ] [ HOME ] [ INHALT ] [ INDEX ] [ -> ]

Weitere spezielle Variablen


[ <= ] [ <- ] [ HOME ] [ INHALT ] [ INDEX ] [ -> ] [ => ]

Autor: Eike Grote Letzte Änderung: 06.09.1998