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.
$_ 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/;
$0 ($PROGRAM_NAME) Name des gerade laufenden Programms
$] ($PERL_VERSION) Version des Perl-Interpreters (z.B. 5.003)
$^O ($OSNAME) Name des Betriebssystems
$^X ($EXECUTABLE_NAME) Name des Perl-Interpreters
$^W ($WARNING) Zeigt an, ob Warnungen ausgegeben werden sollen (z.B. durch die Option "-w").
$^I ($INPLACE_EDIT) Zeigt an, ob eine Datei direkt editiert wird (Option "-i").
$^T ($BASETIME) Zeitpunkt, an dem das aktuelle Skript gestartet wurde (unter UNIX: Anzahl der Sekunden seit dem 1.1.1970)
$$ ($PROCESS_ID) Prozeß-Nummer von Perl
$< ($REAL_USER_ID,$UID) Benutzer-ID, unter der der Prozeß gestartet wurde
$> ($EFFECTIVE_USER_ID,$EUID) Benutzer-ID, unter der der Prozeß aktuell läuft (verschieden von $< im Falle von "Setuid"-Programmen)
$( ($REAL_GROUP_ID,$GID) Liste der Gruppen des Benutzers, unter dem der Prozeß gestartet wurde
$) ($EFFECTIVE_GROUP_ID,$EGID) aktuelle Liste der Gruppen des Benutzers (verschieden von $( im Falle von "Setgid"-Programmen)
$? ($CHILD_ERROR) Status-Nummer des letzten Systemaufrufs
$! ($OS_ERROR,$ERRNO) Fehlerummer oder -meldung (je nach Kontext) des letzten Systemaufrufs
$@ ($EVAL_ERROR) Fehlermeldung des letzten eval()-Aufrufs
@_ Dieses Array enthält die an ein Unterprogramm übergebenen Argumente.
$[ Index des ersten Elements eines Arrays (Standardwert: 0)
Diese Variable sollte (insbesondere ab Perl Version 5) nicht mehr verwendet werden, da dies bei Programmen, die aus mehreren Dateien (Modulen) bestehen, zu Problemen führen kann.
| Autor: Eike Grote | Letzte Änderung: 06.09.1998 |