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 |