Perl-Programmierung: Vordefinierte Variablen
Aus Wikibooks
Inhaltsverzeichnis |
[Bearbeiten] Vordefinierte Variablen
Perl bietet eine Reihe von vordefinierten Variablen, die vom Perl-Interpreter automatisch deklariert werden. In den Variablen werden Informationen über die Laufzeitumgebung und das Perl-Skript gespeichert.
[Bearbeiten] Verschiedene Skalarvariablen
Um die alternativen Variablennamen nutzen zu können, muss das Modul English importiert werden:
use English;
| $^O | Hier wird das Betriebssystem angegeben (alternativ: $OSNAME) |
| $^T | Gibt - in Unix-Zeitrechnung - den Zeitpunkt, zu dem das Programm gestartet wurde, an (alternativ: $BASETIME) |
| $^W | Ob der Perl-Interpreter mit der Option -w gestartet wurde (alternativ: $WARNING) |
| $0 | Name des Skripts (alternativ: $PROGRAM_NAME) |
| $< | Gibt an, unter welcher BenutzerInnen-Kennung (User-ID) das Skript gestartet wurde (alternativ: $UID) |
| $( | Die Gruppenkennung (Group-ID), unter das Skript ausgeführt wird (alternativ: $GID) |
| $$ | Die Prozess-ID des Programms (alternativ: $PID) |
$UID und $GID funktionieren nicht unter Windows!
[Bearbeiten] Umgebungs-Variablen
Über den Hash %ENV kann auf die Umgebungsvariablen (environment) eines Betriebssystems zugegriffen werden Aufruf:
foreach (keys(%ENV)){ print $_ . ": " . $ENV{$_} . "\n"; }
Mögliche Ausgabe unter Windows:
USERPROFILE: C:\Dokumente und Einstellungen\Test
HOMEDRIVE: C:
TEMP: C:\DOKUME~1\TEST~1\LOKALE~1\Temp
SYSTEMDRIVE: C:
PROCESSOR_REVISION: 2302
SYSTEMROOT: C:\WINDOWS
COMMONPROGRAMFILES: C:\Programme\Gemeinsame Dateien
COMSPEC: C:\WINDOWS\system32\cmd.exe
SESSIONNAME: Console
LOGONSERVER: \\NEO
OSTYPE: cygwin32
APPDATA: C:\Dokumente und Einstellungen\Test\Anwendungsdaten
WINDIR: C:\WINDOWS
PROGRAMFILES: C:\Programme
OS: Windows_NT
CYGNUS_HOME: C:\Programme\cygwin
PROCESSOR_LEVEL: 15
PATHEXT: .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
USERNAME: Test
PROMPT: $P$G
NUMBER_OF_PROCESSORS: 2
FP_NO_HOST_CHECK: NO
HOMEPATH: \Dokumente und Einstellungen\Test
PROCESSOR_IDENTIFIER: x86 Family 15 Model 35 Stepping 2, AuthenticAMD
PATH: C:\Programme\cygwin\bin;C:\Perl\site\bin;C:\Perl\bin;C:\WINDOWS\system32; C:\WINDOWS;C:\WINDOWS\System32\Wbem;;C:\PROGRA~1\GEMEIN~1\MUVEET~1\030625
USERDOMAIN: NEO
GPC_EXEC_PREFIX: C:\Programme\cygwin/lib/gcc-lib/
COMPUTERNAME: NEO
ALLUSERSPROFILE: C:\Dokumente und Einstellungen\All Users
PROCESSOR_ARCHITECTURE: x86
TMP: C:\DOKUME~1\TEST~1\LOKALE~1\Temp
[Bearbeiten] Kommandozeilenparameter
In der Listenvariablen @ARGV werden die Kommandozeilenparameter, die beim Aufruf angegeben werden, gespeichert.
Aufruf:
perl beispiel.p -h
Anwendung:
my $arg = shift(@ARGV); if($arg eq "-h"){ #Hilfe-Funktion... }
[Bearbeiten] Funktionsvariablen
Die beim Aufruf einer Funktion mitgegebenen Variablen werden in der Liste @_ gespeichert. Diese ähnelt in der Verwendung der oben beschriebenen @ARGV, welche an das Hauptprogramm mitgegebene Werte enthält
Beispiel
sub Addition{ my $zahl1 = shift(@_); my $zahl2 = shift(@_); print "Die Summe ist" . ($zahl1 + $zahl2); }
[Bearbeiten] Fehlermeldungen
Die Variable $! wird benutzt, wenn eine Systemfunktion einen Fehler verursacht hat. $! enthält in diesem Fall die Fehlermeldung, die dem Perl-Programm zurückgegeben wurde
open(IN,"<nix.txt") or print $!;
[Bearbeiten] $_
Die Variable $_ wurde bereits im Kapitel Besonderheiten von Perl ausführlich besprochen. Jedesmal, wenn bei Funktionen oder Schleifen keine Variablen angegegeben werden, speichert der Interpreter die jeweiligen Werte in $_. Mithilfe von $_ lässt sich sehr kurzer, allerdings auch sehr unleserlicher Programmcode produzieren!
open $IN, "< text.txt" or die "Fehler: $!"; while(<$IN>){ print; }
Dieses Programm liest eine Datei ein und gibt ihren Inhalt zeilenweise aus.
Eine leserlichere Version desselben Programms wäre:
open $IN, "< text.txt" or die "Error: $!"; while(my $input = <$IN>){ print $input; }

