$_
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 Modul English
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. Verwendung 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:
|
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 $_
eine "echte" globale Variable,
und sie läßt sich auch nicht mit my()
in einer Subroutine lokalisieren.
Ein weiteres Beispiel:
|
|
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: $_ =~ tr/a-z/A-Z/;
), die
hier die Kleinbuchstaben von a bis z durch die entsprechenden
Großbuchstaben ersetzt.
$0
($PROGRAM_NAME
) Name des gerade laufenden Programms
$]
(veraltet, siehe $^V ab Version 5.6!)
Version des Perl-Interpreters (z.B. 5.008002
in Perl 5.8.2)
$^V
($PERL_VERSION
)
Version des Perl-Interpreters (Achtung: $^V
setzt sich aus
den Symbolen mit den ASCII-Code-Werten der Versionsnummer zusammen,
z.B. chr(5)chr(8)chr(2) in Perl 5.8.2)
$^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
").
$^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 | Version: 2.07 (27.10.2019) |