Monica y Stefan
Leonardo, Daniela

HomeFotosLeonardoDanielaKalenderPerl

Vordefinierte Skalare

Die Tabellen beschreiben vordefinierte Skalare. Beispiele sind nur dort vorhanden, wo keine grössere Beispielumgebung erforderlich ist. Einige der Skalare sind betriebssystemspezifisch bzw. ausschliesslich in Unix-Umgebungen von Bedeutung.

Um die Langformen der Variablen zu nutzen, müssen Sie mit use English; das entsprechende Standardmodul in Ihr Script einbinden.

Vordefinierte Skalare für Programmablauf und reguläre Ausdrücke

KurzformLangformBedeutungBeispiel
$_$ARGEnthält in Schleifen (z.B. bei der Suche in einer Liste mit foreach, wenn keine andere Variable angegeben wurde, den jeweils aktuellen Wert bzw. das jeweils aktuelle Argument. Wird von einigen Perl-Funktionen als Argument akzeptiert, d.h. den Funktionen muss kein expliziter Wert übergeben werden, wenn $_ als Argument gemeint ist. Enthält bei Operationen mit regulären Ausdrücken den jeweils aktuellen Wert.
@Zahlen = (1..10);foreach(@Zahlen) { print $_, "
";}
$1, $2 usw.Enthält bei Operationen mit regulären Ausdrücken mit runden Klammern jeweils den Wert eines gemerkten Teilausdrucks. Nur lesbar.
if(/from: (.*)/) { $Absender = $1;}
$&$MATCHEnthält nach Anwenden eines regulären Ausdrucks den letzten Wert, auf den das Suchmuster passte. Nur lesbar. Die Verwendung dieser Variablen verlangsamt das gesamte Programm, daher wird die Benutzung nicht empfohlen.
$_ = "Mann und Frau";/und/;print "$&
";
$`$PREMATCHEnthält den Teil des Gesamtausdrucks vor dem letzten Wert, auf den das Suchmuster passte. Nur lesbar. Das ` ist das Accent-grave-Zeichen. Auf vielen Tastaturen Shift-Taste und Accent-Taste drücken, dann ein Leerzeichen tippen. Die Verwendung dieser Variablen verlangsamt das gesamte Programm, daher wird die Benutzung nicht empfohlen.
$_ = "Mann und Frau";/ und/;print "$`
";
$'$POSTMATCHEnthält den Teil des Gesamtausdrucks nach dem letzten Wert, auf den das Suchmuster passte. Nur lesbar. Das ' ist der einfache Apostroph. Die Verwendung dieser Variablen verlangsamt das gesamte Programm, daher wird die Benutzung nicht empfohlen.
$_ = "Mann und Frau";/und /;print "$'
";
$+$LAST_PAREN_MATCHEnthält nach Anwenden eines regulären Ausdrucks mit Klammern den Inhalt der letzten Klammer. Nur lesbar.
$_ = "Mann und Frau";/([a-zA-Z]*) und ([a-zA-Z]*)/;print "$+
";
$.$NR
$INPUT_LINE_NR
Enthält die aktuelle Zeilennummer der zuletzt eingelesenen Datei. Im nebenstehenden Beispiel werden alle Zeilen einer Textdatei eingelesen und ausgegeben. Am Ende kann $. darüber Auskunft geben, wie viele Zeilen eingelesen wurden.
open(DATEI, "<readme.txt");while(<DATEI>) { print $_; }print $., " Zeilen gelesen";close(DATEI);
$/$RS
INPUT_RECORD_SEPARATOR
Enthält den eingestellten Eingabeseparator. Kann geändert werden - auch mehrere Zeichen sind erlaubt. Das nebenstehende Beispiel bewirkt, dass eine Eingabe von der Standardeingabe erst dann abgeschlossen ist, wenn der Anwender die Zeichenfolge ENDE eingibt und Return drückt.
Der voreingestellte Wert ist das Zeilenumbruch-Zeichen
$/ = "ENDE";
$DeinName = <STDIN>;
print $DeinName;
$$ORS
OUTPUT_RECORD_SEPARATOR
Erlaubt die Zuweisung einer Zeichenfolge, die automatisch an jede Ausgabe mit print eingefügt wird.
$ = ";";print "ein Wert";
$,$OFS
OUTPUT_FIELD_SEPARATOR
Erlaubt die Zuweisung einer Zeichenfolge, die automatisch an jeden Einzelwert angehängt wird, der mit print in Form mehrerer, durch Kommata getrennter Einzelwerte ausgegeben wird.
$, = ",";print "Wert","noch einer";
$"$LIST_SEPARATORErlaubt die Zuweisung einer Zeichenfolge, die automatisch an jeden Einzelwert ausser dem letzten angehängt wird, wenn mit print eine Liste bzw. ein Array innerhalb einer Zeichenkette interpoliert ausgegeben wird.
$" = "-";@Liste = (1,2,3,4);print "@Liste";
$|$OUTPUT_AUTOFLUSHWenn diese Variable auf einen Wert ungleich 0 gesetzt wird, werden Ausgaben mit print nicht gepuffert, sondern erfolgen in dem Augenblick, wo die print-Anweisung interpretiert wird. Normalerweise puffert Perl Ausgaben, um sie dann blockweise auszugeben.
$| = 1;
$%$FORMAT_PAGE_NUMBER
$=$FORMAT_LINES_PER_PAGE
$-$FORMAT_LINES_LEFT
$~$FORMAT_NAME
$^$FORMAT_TOP_NAME
$:$FORMAT_LINE_
BREAK_CHARACTERS
$^L$FORMAT_FORMFEED
$^A$ACCUMULATOR

Vordefinierte Skalare für Umgebungsinformationen

KurzformLangformBedeutungBeispiel
$?$CHILD_ERROREnthält den Status, der zuletzt von einem system-Aufruf, einer geschlossenen Pipe oder durch Backticks von einem Kindprozess erzeugt wurde.
system($command) == 0  or die "Fehler bei system: $?"
$!$ERRNO
$OS_ERROR
Enthält eine im Programm-Kontext aktuelle Fehlermeldung oder Fehlernummer, sofern ein Fehler aufgetreten ist. Die nebenstehende Anweisung versucht eine Datei zu öffnen und gibt im Fehlerfall die vordefinierte Perl-Fehlermeldung aus, wenn die Datei nicht geöffnet werden kann und beendet das Programm.
open(DATEI, "<nixda.txt")  or die "Fehler bei open: $!";
$@$EVAL_ERROREnthält einen Wert ungleich null, sofern ein Fehler bei einer Anwendung von eval aufgetreten ist. Wenn kein Fehler aufgetreten ist, enthält sie nichts.
eval { system("dir"); };if($@) { print "dir nicht möglich
";}
$$$PID
$PROCESS_ID
Enthält die Prozess-ID des aktuellen Prozesses, in dem das Script läuft, so wie sie vom Betriebssystem zugewiesen wurde.
print $$;
$<$UID
REAL_USER_ID
Enthält die reale User-ID des den aktuellen Prozess ausführenden Benutzers (sofern das Betriebssystem, auf dem der Perl-Interpreter übersetzt wurde, das unterstützt).
print $<;
$>$EUID
EFFECTIVE_USER_ID
Enthält die effektive User-ID des den aktuellen Prozess ausführenden Benutzers (sofern das Betriebssystem, auf dem der Perl-Interpreter übersetzt wurde, das unterstützt).
print $>;
$($GID
REAL_GROUP_ID
Enthält die reale Gruppen-ID des den aktuellen Prozess ausführenden Benutzers (sofern das Betriebssystem, auf dem der Perl-Interpreter übersetzt wurde, das unterstützt). Ist der Benutzer Mitglied in mehreren Gruppen, so enthält diese Variable die einzelnen Gruppen-IDs durch Leerzeichen voneinander getrennt.
print $(;
$)$EGID
EFFECTIVE_GROUP_ID
Enthält die effektive Gruppen-ID des den aktuellen Prozess ausführenden Benutzers (sofern das Betriebssystem, auf dem der Perl-Interpreter übersetzt wurde, das unterstützt). Ist der Benutzer Mitglied in mehreren Gruppen, so enthält diese Variable die einzelnen Gruppen-IDs durch Leerzeichen voneinander getrennt.
print $);
$0$PROGRAM_NAMEEnthält den Namen des laufenden Scripts.
print $0;
$] Enthält die genaue Versionsnummer des ausführenden Perl-Interpreters. Diese Variable sollte nicht mehr verwendet werden. Stattdessen wird zu $^V geraten.
print $];
$^D$DEBUGGINGEnthält den aktuellen Wert der Debugging-Flags (Ergebnis der Perl-Aufrufoption -D).
print $^D;
$^F$SYSTEM_FD_MAXEnthält den Wert des höchsten offenen Dateidescriptors - normalerweise den Wert 2.
print $^F;
$^HEnthält die Anzahl von Syntaxprüfungen, die Perl bei der Angabe von use strict; und anderen Angaben zu strenger Syntaxprüfung durchführt.
print $^H;
$^I$INPLACE_EDITist defined oder undef, je nachdem, ob das Inplace-Edit-Flag gesetzt ist oder nicht.
print $^I;
$^MKann Daten aufnehmen für den Fall, dass Perl die Ausführung des Scripts wegen Arbeitsspeichermangel nicht fortführen kann. Die nebenstehende Anweisung reserviert 64 Kilobyte Arbeitsspeicher für den Fall, dass Perl bei der Ausführung des Scripts keinen neuen Arbeitsspeicher mehr für benötigte Daten reservieren kann.
Dieses Feature muss bei der übersetzung des Perl-Interpreters explizit aktiviert werden, damit es benutzbar ist.
$^M = 'a' x (1<<16);
$^O$OSNAMEName des Betriebssystems.
print $^O;
$^P$PERLDBEnthält den aktuellen Debug-Status.
print $^P;
$^SEnthält den aktuellen Zustand des Perl-Interpreters. Wenn ein Aufruf von eval nicht beendet ist, hat diese Variable den Wert undef.
eval { system("rm_all_old"); };print $^S;
$^T$BASETIMEEnthält den Zeitpunkt, zu dem das Scipt gestartet wurde. Der Wert entspricht der Zahl an Sekunden, die vom 1.1.1970, 0.00 Uhr, bis zum Startzeitpunkt des Scripts vergangen sind.
print "Start: $^T, ";sleep(3);my $jetzt = time;print "und jetzt: $jetzt";
$^V$PERL_VERSIONEnthält die genaue Versionsnummer des ausführenden Perl-Interpreters in Form von Ordinalwerten. Um die Daten sichtbar zu machen, verwenden Sie sprintf oder printf und den speziellen Formatbezeichner %vd.
printf "%vd", $^V;
$^W$WARNINGIst wahr (1), wenn die Perl-Aufrufoption -w gesetzt ist, und unwahr (0), wenn sie nicht gesetzt ist.
print "Vorsicht!" if($^W);
$^X$EXECUTABLE_NAMEEnthält den Namen der ausführbaren Datei des Perl-Interpreters, der das Script ausführt.
print $^X;

 

zum Inhalt