Einige spezielle Variablen werden in der Perl-Sprache definiert, normalerweise mit dem Präfix $, @ oder %, zum Beispiel: $_.
Viele spezielle Variablen haben einen langen englischen Namen. Die Betriebssystemvariable $! kann als $OS_ERROR geschrieben werden.
Wenn Sie spezielle Variablen mit englischen Namen verwenden möchten, müssen Sie am Kopf des Programms use English hinzufügen. Dies ermöglicht die Verwendung beschreibender englischer Spezialvariablen.
Die am häufigsten verwendete Spezialvariable ist $_, die Standardeingabe- und Mustervergleichsinhalte enthält. Beispiele sind wie folgt:
Wenn Sie das obige Programm ausführen, lautet das Ausgabeergebnis:
GoogleCoderctoTaobao
In den folgenden Beispielen verwenden wir $_ nicht zur Ausgabe von Inhalten:
Wenn Sie das obige Programm ausführen, lautet das Ausgabeergebnis:
GoogleCoderctoTaobao
Im Beispiel wird zuerst „Google“, dann „Codercto“ und schließlich „Taobao“ ausgegeben.
In einer iterativen Schleife wird die Zeichenfolge der aktuellen Schleife in $_ abgelegt und dann über print ausgegeben. Darüber hinaus gibt print keine Ausgabevariable an und $_ wird standardmäßig verwendet.
Hier sind einige Stellen, an denen Perl $_ annimmt, auch wenn es nicht angegeben ist:
Verschiedene unäre Funktionen, einschließlich Funktionen wie ord() und int() und alle Dateitestoperationen („-f“, „-d“) mit Ausnahme von „-t“, das standardmäßig auf STDIN ausgeführt wird.
Verschiedene Listenfunktionen wie print() und unlink().
Mustervergleichsoperationen „m//“, „s///“ und „tr///“ ohne den Operator „=~“.
Die Standarditerationsvariable für „foreach“-Schleifen, wenn keine anderen Variablen angegeben sind.
Implizite Iterationsvariablen für die Funktionen grep() und map().
Wenn „while“ nur eine Bedingung hat und diese Bedingung das Ergebnis der „“-Operation testet, ist $_ der Standardspeicherort für den Eingabedatensatz. Dies geschieht nur unter „while“-Testbedingungen. (Mnemonik: Der Unterstrich kann bei bestimmten Operationen weggelassen werden.)
Je nach Art der Verwendung spezieller Variablen können diese in folgende Kategorien eingeteilt werden:
Globale skalare Spezialvariable.
Spezielle Variablen für globale Arrays.
Globale Hash-Spezialvariable.
Globales spezielles Dateihandle.
Globale Spezialkonstanten.
Spezielle Variablen für reguläre Ausdrücke.
Spezielle Variable für Dateihandle.
Im Folgenden sind alle skalaren Sondervariablen aufgeführt, einschließlich Variablen mit Sonderzeichen und englischen Formen:
$_ | Standardeingabe- und Mustervergleichsinhalte. |
$ARG | |
$. | Die aktuelle Zeilennummer des zuletzt gelesenen Dateihandles |
$NR | |
$/ | Geben Sie das Datensatztrennzeichen ein, das standardmäßig ein neues Zeilenzeichen ist. Wenn Sie die Variable undef verwenden, wird das Ende der Datei gelesen. |
$RS | |
$, | Ausgabefeldtrennzeichen |
$OFS | |
$ | Trennzeichen für Ausgabedatensätze |
$ORS | |
$" | Diese Variable ähnelt $, sollte jedoch zum Interpolieren von Array- und Slice-Werten in Zeichenfolgen in doppelten Anführungszeichen (oder ähnliche interpolierte Zeichenfolgen) verwendet werden. Der Standardwert ist ein Leerzeichen. |
$LIST_SEPARATOR | |
$; | Trennzeichen, das bei der Simulation mehrdimensionaler Arrays verwendet wird. Der Standardwert ist „ 34“. |
$SUBSCRIPT_SEPARATOR | |
$^L | An den Ausgabekanal gesendeter Papiervorschub. Der Standardwert ist „f“. |
$FORMAT_FORMFEED | |
$: | Der aktuelle Zeichensatz, nach dem eine Zeichenfolge unterbrochen werden kann, um Fortsetzungsfelder (beginnend mit ^) in einem Format zu füllen, ist „n“. |
$FORMAT_LINE_BREAK_CHARACTERS | |
$^A | Variable zum Speichern formatierter Daten vor dem Drucken |
$Akkumulator | |
$# | Standardausgabeformat für Zahlen beim Drucken von Zahlen (veraltet). |
$OFMT | |
$? | Gibt den Status des vorherigen externen Befehls zurück |
$CHILD_ERROR | |
$! | Der numerische Wert dieser Variablen ist der Wert von errno und der Zeichenfolgenwert ist die entsprechende Systemfehlerzeichenfolge. |
$OS_ERROR oder $ERRNO | |
$@ | Die Fehlermeldung des Befehls eval. Wenn sie leer ist, bedeutet dies, dass der letzte eval-Befehl erfolgreich ausgeführt wurde. |
$EVAL_ERROR | |
$$ | Die Prozessnummer, die das aktuelle Perl-Skript ausführt |
$PROCESS_ID oder $PID | |
$< | Die tatsächliche Benutzernummer des aktuellen Prozesses |
$REAL_USER_ID oder $UID | |
$> | Die effektive Benutzer-ID des aktuellen Prozesses |
$EFFECTIVE_USER_ID oder $EUID | |
$( | Die tatsächliche Gruppenbenutzernummer des aktuellen Prozesses |
$REAL_GROUP_ID oder $GID | |
$) | Die effektive Gruppenbenutzernummer des aktuellen Prozesses |
$EFFECTIVE_GROUP_ID oder $EGID | |
0 $ | Enthält den Dateinamen des ausgeführten Skripts |
$PROGRAM_NAME | |
$[ | Der Index des ersten Elements des Arrays, der Standardwert ist 0. |
$] | Perl-Versionsnummer |
$PERL_VERSION | |
$^D | Wert des Debug-Flags |
$DEBUGGING | |
$^E | Erweiterte Fehlermeldungen des Betriebssystems in Nicht-UNIX-Umgebungen |
$EXTENDED_OS_ERROR | |
$^F | Maximaler Dateipaket-Deskriptorwert |
$SYSTEM_FD_MAX | |
$^H | Vom Compiler aktivierter Status der Syntaxprüfung |
$^I | Werte des integrierten Steuerungseditors |
$INPLACE_EDIT | |
$^M | Größe des Ersatzspeicherpools |
$^O | Betriebssystemname |
$OSNAME | |
$^P | Interne Variable, die den aktuellen Debug-Wert angibt |
$PERLDB | |
$^T | Die Zeit in Sekunden, zu der das Skript ausgeführt wurde, beginnend mit dem Beginn des neuen Jahrhunderts. |
$BASETIME | |
$^W | Aktueller Wert des Warnschalters |
$WARNUNG | |
$^X | Der Name des ausführbaren Perl-Binärcodes |
$EXECUTABLE_NAME | |
$ARGV | Der aktuelle Dateiname beim Lesen aus dem Standarddateihandle |
@ARGV | Liste der an das Skript übergebenen Befehlszeilenargumente |
@INC | Liste der Verzeichnisse, die beim Importieren eines Moduls durchsucht werden sollen |
@F | Array-Eingabe über die Befehlszeile |
%INC | Die Hash-Tabelle %INC enthält alle Dateien, die in do- oder require-Anweisungen enthalten sind. Der Schlüssel ist der Dateiname und der Wert ist der Pfad zur Datei. |
%ENV | Enthält aktuelle Umgebungsvariablen |
%SIG | Liste der Signale und wie man damit umgeht |
ARGV | Spezielle Dateihandles zum Durchlaufen aller Dateinamen in der Array-Variablen @ARGV |
STDERR | Standard-Fehlerausgabehandle |
STDIN | Standard-Eingabehandle |
STDOUT | Standard-Handle |
DATEN | Das spezielle Dateihandle bezieht sich auf alles in der Datei nach dem Flag __END__, einschließlich Skriptinhalten. Oder verweisen Sie auf alles nach dem Flag __DATA__ in einer Include-Datei. Solange Sie Daten im selben Paket lesen, ist __DATA__ vorhanden. |
_ (Unterstrich) | Spezielle Dateihandles werden zum Zwischenspeichern von Dateiinformationen verwendet (fstat, stat und lstat). |
__ENDE__ | Die Logik des Skripts endet und nachfolgender Text wird ignoriert. |
__DATEI__ | aktueller Dateiname |
__LINIE__ | Aktuelle Zeilennummer |
__PAKET__ | Der aktuelle Paketname ist der Standardpaketname. |
$n | Enthält den n-ten Teilstring der letzten Musterübereinstimmung |
$& | Die Zeichenfolge der vorherigen erfolgreichen Musterübereinstimmung |
$MATCH | |
$` | Der Inhalt vor der letzten erfolgreich abgeglichenen Teilzeichenfolge |
$PREMATCH | |
$' | Der Inhalt nach der vorherigen erfolgreich abgeglichenen Teilzeichenfolge |
$POSTMATCH | |
$+ | Die letzte Klammer, die mit dem vorherigen Suchmuster für reguläre Ausdrücke übereinstimmt. Zum Beispiel: /Version: (.*)|Revision: (.*)/ && ($rev = $+); |
$LAST_PAREN_MATCH |
$| | Bei Null wird nach jedem Aufruf der Schreib- oder Druckfunktion automatisch die Funktion fflush aufgerufen, um den geschriebenen Inhalt zurück in die Datei zu schreiben. |
$OUTPUT_AUTOFLUSH | |
$% | Aktuelle Ausgabeseitennummer |
$FORMAT_PAGE_NUMBER | |
$= | Die aktuelle Länge jeder Seite. Der Standardwert ist 60. |
$FORMAT_LINES_PER_PAGE | |
$- | Die Anzahl der auf der aktuellen Seite verbleibenden Zeilen |
$FORMAT_LINES_LEFT | |
$~ | Der Name des aktuellen Berichtsausgabeformats. Der Standardwert ist der Datei-Handle-Name. |
$FORMAT_NAME | |
$^ | Der Name des aktuellen Berichtsausgabe-Headerformats. Der Standardwert ist der Datei-Handle-Name mit dem Suffix „_TOP“. |
$FORMAT_TOP_NAME |