EnglischFranzösischSpanisch

OnWorks-Favicon

perlvar – Online in der Cloud

Führen Sie Perlvar im kostenlosen Hosting-Anbieter OnWorks über Ubuntu Online, Fedora Online, den Windows-Online-Emulator oder den MAC OS-Online-Emulator aus

Dies ist der Befehl perlvar, der beim kostenlosen Hosting-Anbieter OnWorks mit einer unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, dem Windows-Online-Emulator oder dem MAC OS-Online-Emulator ausgeführt werden kann

PROGRAMM:

NAME/FUNKTION


perlvar – Vordefinierte Perl-Variablen

BESCHREIBUNG


Die Syntax of Variable Namen
Variablennamen in Perl können verschiedene Formate haben. Normalerweise müssen sie mit einem Buchstaben beginnen
oder Unterstrich, in diesem Fall können sie beliebig lang sein (bis zu einer internen Grenze von 251).
Zeichen) und kann Buchstaben, Ziffern, Unterstriche oder die Sonderfolge „::“ oder enthalten
"'". In diesem Fall wird der Teil vor dem letzten „::“ oder „'“ als a angenommen Paket
Qualifizierer; siehe perlmod.

Perl-Variablennamen können auch eine Folge von Ziffern oder ein einzelnes Satzzeichen oder Steuerelement sein
Zeichen (wobei die literale Steuerzeichenform veraltet ist). Diese Namen sind alle
für spezielle Zwecke von Perl reserviert; Beispielsweise werden ausschließlich aus Ziffern bestehende Namen zur Speicherung von Daten verwendet
durch Rückverweise nach einer Übereinstimmung mit einem regulären Ausdruck erfasst. Perl hat eine spezielle Syntax
für die Einzelsteuerzeichennamen: Unter „^X“ (Caret „X“) versteht man das
Steuerzeichen „X“. Beispielsweise lautet die Notation $^W (Dollarzeichen-Caret „W“)
Skalarvariable, deren Name das Einzelzeichen-Steuerelement „W“ ist. Das ist besser als
Geben Sie ein wörtliches Steuerelement „W“ in Ihr Programm ein.

Seit Perl v5.6.0 können Perl-Variablennamen alphanumerische Zeichenfolgen sein, die mit einem Caret beginnen
(oder ein Steuerzeichen, aber diese Form ist veraltet). Diese Variablen müssen eingeschrieben werden
die Form „${^Foo}“; Die Klammern sind nicht optional. „${^Foo}“ bezeichnet die Skalarvariable
dessen Name aus einem Kontroll-„F“ gefolgt von zwei „o“ besteht. Diese Variablen sind reserviert für
zukünftige spezielle Verwendungen von Perl, mit Ausnahme derjenigen, die mit „^_“ (Steuerung-Unterstrich) beginnen
oder Caret-Unterstrich). Kein Steuerzeichenname, der mit „^_“ beginnt, erhält ein
besondere Bedeutung in jeder zukünftigen Version von Perl; Solche Namen können daher bedenkenlos verwendet werden
Programme. $^_ selbst jedoch, is reserviert.

Perl-Bezeichner, die mit Ziffern, Steuerzeichen oder Satzzeichen beginnen, sind
sind von den Auswirkungen der „Paket“-Deklaration ausgenommen und müssen immer dabei sein
Paket „main“; Sie sind außerdem von „strict ‚vars‘“-Fehlern ausgenommen. Ein paar andere Namen sind
auch auf diese Weise befreit:

ENV STDIN
INC STDOUT
ARGV STDERR
ARGVOUT
SIG

Insbesondere wird davon ausgegangen, dass die speziellen „${^_XYZ}“-Variablen immer im Paket „main“ enthalten sind.
unabhängig von derzeit gültigen „Paket“-Deklarationen.

SPECIAL VARIABLEN


Die folgenden Namen haben für Perl eine besondere Bedeutung. Die meisten Interpunktionsnamen sind sinnvoll
Mnemoniken oder Analoga in den Shells. Wenn Sie jedoch eine lange Variable verwenden möchten
Namen, Sie brauchen nur zu sagen:

Benutze Englisch;

ganz oben auf Ihrem Programm. Dadurch werden alle Kurznamen mit den Langnamen im verknüpft
Aktuelles Paket. Einige haben sogar mittlere Namen, die im Allgemeinen von entlehnt sind awk. Für weitere
Informationen finden Sie auf Englisch.

Bevor Sie fortfahren, beachten Sie die Sortierreihenfolge der Variablen. Im Allgemeinen listen wir zunächst die auf
Variablen in nahezu lexigraphischer Reihenfolge ohne Berücksichtigung der Groß-/Kleinschreibung (ohne Berücksichtigung von „{“ oder „^“)
vorangehende Wörter, wie in „${^UNICODE}“ oder $^T), obwohl $_ und @_ an den Anfang des rücken
Haufen. Für Variablen mit demselben Bezeichner listen wir sie in der Reihenfolge Skalar, Array, Hash usw. auf.
und bloßes Wort.

Allgemein Variablen
$ARG
$_ Der Standardeingabe- und Mustersuchbereich. Die folgenden Paare sind
Äquivalent:

while (<>) {...} # Äquivalent nur in while!
while (definiert($_ = <>)) {...}

/^Betreff:/
$_ =~ /^Betreff:/

tr/az/AZ/
$_ =~ tr/az/AZ/

chomp
chomp($_)

Hier sind die Stellen, an denen Perl $_ annimmt, auch wenn Sie es nicht verwenden:

· Die folgenden Funktionen verwenden $_ als Standardargument:

abs, alarm, chomp, hacken, chr, chroot, cos, definiert, eval, evalbytes, exp, fc,
glob, hex, int, lc, lcfirst, länge, log, lstat, mkdir, oct, ord, pos, print,
printf, quotemeta, readlink, readpipe, ref, require, reverse (im skalaren Kontext
only), rmdir, say, sin, split (für sein zweites Argument), sqrt, stat, Study, uc,
ucfirst, Verknüpfung aufheben, auspacken.

· Alle Dateitests („-f“, „-d“) mit Ausnahme von „-t“, das standardmäßig auf STDIN eingestellt ist. Siehe „-X“
in perlfunc

· Die Mustervergleichsoperationen „m//“, „s///“ und „tr///“ (auch bekannt als „y///“), wenn
Wird ohne den Operator „=~“ verwendet.

· Die Standard-Iteratorvariable in einer „foreach“-Schleife, wenn keine andere Variable vorhanden ist
geliefert.

· Die implizite Iteratorvariable in den Funktionen „grep()“ und „map()“.

· Die implizite Variable von „given()“.

· Der Standardort zum Einfügen des nächsten Werts oder Eingabedatensatzes, wenn ein „ ",
Das Ergebnis der Operation „readline“, „readdir“ oder „each“ wird einzeln getestet
einziges Kriterium eines „while“-Tests. Außerhalb eines „while“-Tests ist dies nicht der Fall
passieren.

$_ ist standardmäßig eine globale Variable. Ab Perl v5.10.0 können Sie jedoch a verwenden
lexikalische Version von $_, indem Sie es in einer Datei oder in einem Block mit „my“ deklarieren.
Darüber hinaus stellt die Deklaration von „unser $_“ das globale $_ im aktuellen Bereich wieder her. Obwohl
Dies schien zum Zeitpunkt seiner Einführung eine gute Idee zu sein, eigentlich lexikalisch $_
verursacht mehr Probleme als es löst. Wenn Sie eine Funktion aufrufen, die dies erwartet
Übergeben von Informationen über $_ kann es je nach Funktion funktionieren oder auch nicht
geschrieben steht, gibt es keinen einfachen Weg, dies zu lösen. Vermeiden Sie einfach das lexikalische $_,
es sei denn, Sie fühlen sich besonders masochistisch. Aus diesem Grund ist $_ lexikalisch
ist noch experimentell und gibt eine Warnung aus, sofern die Warnungen nicht deaktiviert wurden.
Wie bei anderen experimentellen Funktionen unterliegt auch das Verhalten des lexikalischen $_
ohne Vorankündigung ändern, einschließlich der Umwandlung in einen schwerwiegenden Fehler.

Mnemonik: Unterstreichung wird bei bestimmten Operationen verstanden.

@ARG
@_ Innerhalb einer Unterroutine enthält das Array @_ die an diese übergebenen Parameter
Subroutine. Innerhalb einer Unterroutine ist @_ das Standardarray für die Array-Operatoren
„Pop“ und „Shift“.

Siehe perlsub.

$LIST_SEPARATOR
$" Wenn ein Array oder ein Array-Slice in eine in doppelte Anführungszeichen gesetzte Zeichenfolge oder eine interpoliert wird
In einem ähnlichen Kontext wie „/.../“ werden die Elemente durch diesen Wert getrennt.
Der Standardwert ist ein Leerzeichen. Zum Beispiel dies:

print „Das Array ist: @array\n“;

ist gleichbedeutend damit:

print "Das Array ist: " . join($", @array) . "\n";

Mnemonik: Funktioniert im Kontext mit doppelten Anführungszeichen.

$PROCESS_ID
$PID
$$ Die Prozessnummer des Perl, das dieses Skript ausführt. Obwohl du können. stellen Sie dies ein
Variabel, davon wird im Allgemeinen abgeraten, obwohl es von unschätzbarem Wert sein kann
einige Testzwecke. Es wird bei allen „fork()“-Aufrufen automatisch zurückgesetzt.

Hinweis für Benutzer von Linux und Debian GNU/kFreeBSD: Vor Perl v5.16.0 würde Perl dies tun
Emulieren Sie die POSIX-Semantik auf Linux-Systemen mithilfe von LinuxThreads, einem Teil
Implementierung von POSIX-Threads, die inzwischen durch das native POSIX ersetzt wurde
Thread-Bibliothek (NPTL).

LinuxThreads ist unter Linux mittlerweile veraltet und das Caching von „getpid()“ ist wie folgt erfolgt
Das Einbetten von Perl ist unnötig komplex (da Sie das manuell aktualisieren müssten
Wert von $$), also geben $$ und „getppid()“ jetzt immer die gleichen Werte zurück wie der
zugrunde liegende C-Bibliothek.

Debian GNU/kFreeBSD-Systeme verwendeten bis einschließlich 6.0 auch LinuxThreads
veröffentlicht, aber danach auf die FreeBSD-Thread-Semantik umgestellt, die POSIX-ähnlich ist.

Um festzustellen, ob Ihr System von dieser Diskrepanz betroffen ist, überprüfen Sie, ob „getconf
GNU_LIBPTHREAD_VERSION | grep -q NPTL“ gibt einen falschen Wert zurück. NTPL-Threads
Bewahren Sie die POSIX-Semantik.

Mnemonik: wie bei Muscheln.

$PROGRAM_NAME
$0 Enthält den Namen des ausgeführten Programms.

Auf einigen (aber nicht allen) Betriebssystemen ändert die Zuweisung zu $0 den Argumentbereich
dass das Programm „ps“ sieht. Auf einigen Plattformen müssen Sie möglicherweise spezielle „ps“ verwenden.
Optionen oder ein anderes „ps“, um die Änderungen anzuzeigen. Das Ändern von $0 ist sinnvoller
B. um den aktuellen Programmstatus anzuzeigen, und nicht um das Programm auszublenden
Du rennst.

Beachten Sie, dass es plattformspezifische Einschränkungen hinsichtlich der maximalen Länge von $0 gibt. In
Im extremsten Fall kann es auf den vom ursprünglichen $0 belegten Platz beschränkt werden.

Bei manchen Plattformen kann die Polsterung beliebig groß sein, zum Beispiel Platz
Zeichen nach dem geänderten Namen, angezeigt durch „ps“. Auf einigen Plattformen ist dies der Fall
Die Auffüllung kann bis zur ursprünglichen Länge des Argumentbereichs reichen, nein
egal, was Sie tun (das ist zum Beispiel bei Linux 2.2 der Fall).

Hinweis für BSD-Benutzer: Durch das Setzen von $0 wird „Perl“ nicht vollständig aus dem entfernt ps(1)
Ausgabe. Wenn Sie beispielsweise $0 auf „foobar“ setzen, kann dies zu „perl: foobar (perl)“ führen.
(Ob sowohl das Präfix „perl:“ als auch das Suffix „(perl)“ angezeigt werden, hängt davon ab
Ihre genaue BSD-Variante und -Version). Dies ist eine Funktion des Betriebssystems Perl
kann es nicht lassen.

In Multithread-Skripten koordiniert Perl die Threads so, dass jeder Thread dies tun kann
Ändern Sie seine Kopie von $0 und die Änderung wird für sichtbar ps(1) (unter der Annahme, dass
Betriebssystem spielt mit). Beachten Sie, dass die Ansicht von $0 die anderen Threads haben
wird sich nicht ändern, da sie ihre eigenen Kopien davon haben.

Wenn das Programm über die Schalter „-e“ oder „-E“ an Perl übergeben wurde, wird $0 verwendet
die Zeichenfolge „-e“ enthalten.

Unter Linux wird ab Perl v5.14.0 der Legacy-Prozessname mit festgelegt prktl(2), ein
Zusätzlich zur Änderung des POSIX-Namens über „argv[0]“, wie es Perl seit der Version getan hat
4.000. Jetzt Systemdienstprogramme, die den alten Prozessnamen wie ps, top und lesen
killall erkennt den Namen, den Sie bei der Zuweisung zu $0 festgelegt haben. Die Saite du
Die Versorgung wird bei 16 Bytes unterbrochen, dies ist eine von Linux auferlegte Einschränkung.

Mnemonik: das Gleiche wie sh und ksh.

$REAL_GROUP_ID
$GID
$( Der eigentliche GID dieses Prozesses. Wenn Sie sich auf einem Computer befinden, der die Mitgliedschaft in unterstützt
Wenn Sie mehrere Gruppen gleichzeitig verwenden, erhalten Sie eine durch Leerzeichen getrennte Liste der Gruppen, denen Sie angehören.
Die erste Zahl wird von „getgid()“ zurückgegeben, die folgenden von
„getgroups()“, von denen eine mit der ersten Zahl identisch sein kann.

Ein $( zugewiesener Wert muss jedoch eine einzelne Zahl sein, die zum Festlegen der tatsächlichen GID verwendet wird.
Der durch $( angegebene Wert sollte also nicht wieder an $( zugewiesen werden, ohne erzwungen zu werden
numerisch, beispielsweise durch Hinzufügen einer Null. Beachten Sie, dass sich dies von der effektiven GID unterscheidet
($)), was eine Liste erfordert.

Mit können Sie sowohl den realen Gid als auch den effektiven Gid gleichzeitig ändern
„POSIX::setgid()“. Änderungen an $( erfordern eine Überprüfung von $!, um mögliche Änderungen zu erkennen
Fehler nach einem Änderungsversuch.

Mnemonik: Klammern werden verwendet Gruppe Dinge. Der wahre Gid ist die Gruppe, die du bist
links, wenn Sie setgid ausführen.

$EFFECTIVE_GROUP_ID
$EGID
$) Die effektive Gid dieses Prozesses. Wenn Sie sich auf einem Computer befinden, der dies unterstützt
Mitgliedschaft in mehreren Gruppen gleichzeitig, ergibt eine durch Leerzeichen getrennte Liste von
Gruppen, in denen Sie sich befinden. Die erste Zahl ist diejenige, die von „getegid()“ zurückgegeben wird, und die
nachfolgende durch „getgroups()“, von denen eine mit der ersten identisch sein kann
Anzahl.

Ebenso muss ein $) zugewiesener Wert ebenfalls eine durch Leerzeichen getrennte Liste von Zahlen sein.
Die erste Zahl legt die effektive GID fest und der Rest (falls vorhanden) wird an übergeben
„setgroups()“. Um den Effekt einer leeren Liste für „setgroups()“ zu erhalten, wiederholen Sie einfach den Vorgang
das neue effektive GID; das heißt, einen effektiven gid von 5 und einen effektiven zu erzwingen
Leere „setgroups()“-Liste, sagen wir „ $) = „5 5“ „.

Mit können Sie sowohl den effektiven als auch den tatsächlichen GID gleichzeitig ändern
„POSIX::setgid()“ (nur ein einziges numerisches Argument verwenden). Änderungen an $) erfordern a
Scheck auf $! um mögliche Fehler nach einem Änderungsversuch zu erkennen.

$<, $>, $( und $) können nur auf Computern festgelegt werden, die das entsprechende unterstützen
set[re][ug]id() Routine. $( und $) können nur auf unterstützenden Computern ausgetauscht werden
„setregid()“.

Mnemonik: Klammern werden verwendet Gruppe Dinge. Das effektive Gid ist die Gruppe
Recht für Sie, wenn Sie setgid ausführen.

$REAL_USER_ID
$UID
$< Die tatsächliche UID dieses Prozesses. Sie können sowohl die tatsächliche als auch die effektive UID ändern
uid gleichzeitig mit „POSIX::setuid()“ ändern. Da Änderungen an $< eine erfordern
Systemaufruf, überprüfen Sie $! Versuchen Sie nach einer Änderung, eventuelle Fehler zu erkennen.

Mnemonik: Es ist die UID, zu der Sie gekommen sind für, wenn Sie setuid ausführen.

$EFFECTIVE_USER_ID
$EUID
$> Die effektive UID dieses Prozesses. Zum Beispiel:

$< = $>; # Real auf effektive UID setzen
($<,$>) = ($>,$<); # Tauschen Sie echte und effektive UIDs aus

Mit können Sie sowohl die effektive UID als auch die tatsächliche UID gleichzeitig ändern
„POSIX::setuid()“. Änderungen an $> erfordern eine Überprüfung von $! mögliche zu erkennen
Fehler nach einem Änderungsversuch.

$< und $> können nur auf Rechnern ausgetauscht werden, die „setreuid()“ unterstützen.

Mnemonik: Es ist die UID, die Sie eingegeben haben zu, wenn Sie setuid ausführen.

$SUBSCRIPT_SEPARATOR
$SUBSEP
$; Das tiefgestellte Trennzeichen für die mehrdimensionale Array-Emulation. Wenn Sie sich auf a beziehen
Hash-Element als

$foo{$x,$y,$z}

es bedeutet wirklich

$foo{join($;, $x, $y, $z)}

Aber nicht setzen

@foo{$x,$y,$z} # ein Slice – beachten Sie das @

was

($foo{$x},$foo{$y},$foo{$z})

Der Standardwert ist „\034“, dasselbe wie SUBSEP in awk. Wenn Ihre Schlüssel Binärdaten enthalten
Es gibt möglicherweise keinen sicheren Wert für $;.

Erwägen Sie die Verwendung „echter“ mehrdimensionaler Arrays, wie in Perllol beschrieben.

Mnemonik: Komma (das syntaktische tiefgestellte Trennzeichen) ist ein Semikolon.

$a
$b Spezielle Paketvariablen bei Verwendung von „sort()“, siehe „sort“ in perlfunc. Wegen
Diese Besonderheit $a und $b muss nicht deklariert werden (mit „use vars“ oder
„our()“), auch wenn das Pragma „strict ‚vars‘“ verwendet wird. Lexikalisieren Sie sie nicht mit
„my $a“ oder „my $b“, wenn Sie diese im „sort()“-Vergleich verwenden möchten
Block oder Funktion.

%ENV Der Hash %ENV enthält Ihre aktuelle Umgebung. Das Festlegen eines Werts in „ENV“ ändert sich
Die Umgebung für alle untergeordneten Prozesse wird anschließend durch „fork()“ deaktiviert.

Ab v5.18.0 sind sowohl Schlüssel als auch Werte, die in %ENV gespeichert sind, mit Zeichenfolgen versehen.

mein $foo = 1;
$ENV{'bar'} = \$foo;
if( ref $ENV{'bar'} ) {
sagen Sie „Verhalten vor 5.18.0“;
} Else {
sagen Sie „Verhalten nach 5.18.0“;
}

Bisher erhielten nur untergeordnete Prozesse stringifizierte Werte:

mein $foo = 1;
$ENV{'bar'} = \$foo;

# Immer gedruckt 'non ref'
system($^X, '-e',
q/print ( ref $ENV{'bar'} ? 'ref' : 'non ref' ) /);

Dies liegt daran, dass Sie keine beliebigen Datenstrukturen mit Fremddaten teilen können
Prozesse.

$OLD_PERL_VERSION
$] Die Revision, Version und Subversion des Perl-Interpreters, dargestellt als
Dezimalzahl der Form 5.XXXYYY, wobei XXX die Version / 1e3 und YYY die ist
Subversion / 1e6. Perl v5.10.1 wäre beispielsweise „5.010001“.

Diese Variable kann verwendet werden, um zu bestimmen, ob der Perl-Interpreter a ausführt
Das Skript liegt im richtigen Versionsbereich vor:

warnen Sie „Kein PerlIO!\n“, wenn $] lt '5.008';

Beim Vergleich von $] gelten String-Vergleichsoperatoren hoch empfohlendem „Vermischten Geschmack“. Seine
Inhärente Einschränkungen der binären Gleitkommadarstellung können manchmal dazu führen
Falsche Vergleiche für einige Zahlen auf einigen Architekturen.

Weitere Informationen finden Sie auch in der Dokumentation zu „VERSION verwenden“ und „VERSION erfordern“.
Dies kann fehlschlagen, wenn der laufende Perl-Interpreter zu alt ist.

Unter „$^V“ finden Sie eine Darstellung der Perl-Version als Versionsobjekt, das
ermöglicht flexiblere String-Vergleiche.

Der Hauptvorteil von $] gegenüber $^V besteht darin, dass es auf jeder Version von gleich funktioniert
Perl. Die Nachteile bestehen darin, dass es nicht einfach mit anderen Versionen verglichen werden kann
Formate (z. B. literale V-Strings, „v1.2.3“ oder Versionsobjekte) und numerisch
Vergleiche können gelegentlich fehlschlagen; Es eignet sich gut für Versionsprüfungen von String-Literalen und
schlecht für den Vergleich mit einer Variablen, die nicht auf Plausibilität überprüft wurde.

Das Formular $OLD_PERL_VERSION wurde jedoch aus historischen Gründen in Perl v5.20.0 hinzugefügt
Von seiner Verwendung wird abgeraten. (Wenn Ihr Grund für die Verwendung von $] darin besteht, Code auf alten Perls auszuführen, dann
es als $OLD_PERL_VERSION zu bezeichnen, wäre selbstzerstörerisch.)

Mnemonik: Steht diese Perl-Version in der rechten Klammer?

$SYSTEM_FD_MAX
$^F Der maximale Systemdateideskriptor, normalerweise 2. Systemdateideskriptoren sind
werden an „exec()“-Prozesse übergeben, höhere Dateideskriptoren hingegen nicht. Auch,
Während eines „open()“ bleiben Systemdateideskriptoren erhalten, auch wenn das „open()“
schlägt fehl (normale Dateideskriptoren werden geschlossen, bevor „open()“ versucht wird).
Der Close-on-Exec-Status eines Dateideskriptors wird entsprechend entschieden
Wert von $^F, wann die entsprechende Datei, Pipe oder der entsprechende Socket geöffnet wurde, nicht die Zeit
des „exec()“.

@F Das Array @F enthält die Felder jeder Zeile, die im Autosplit-Modus eingelesen werden
eingeschaltet. Siehe perlrun für -a schalten. Dieses Array ist paketspezifisch und
muss beim Ausführen deklariert oder mit einem vollständigen Paketnamen versehen werden, wenn es nicht im Paket main enthalten ist
unter „strenge ‚vars‘“.

@INC Das Array @INC enthält die Liste der Orte, die „EXPR ausführen“, „erfordern“ oder „verwenden“
Konstrukte suchen nach ihren Bibliotheksdateien. Es besteht zunächst aus den Argumenten
zu jedem -I Befehlszeilenschalter, gefolgt von der Standard-Perl-Bibliothek, wahrscheinlich
/usr/local/lib/perl, gefolgt von „.“, um das aktuelle Verzeichnis darzustellen. ("."
wird nicht angehängt, wenn Taint-Prüfungen aktiviert sind, weder durch „-T“ noch durch „-t“.) Wenn
Wenn Sie dies zur Laufzeit ändern müssen, sollten Sie das Pragma „use lib“ verwenden, um das zu erhalten
maschinenabhängige Bibliothek auch ordnungsgemäß geladen:

benutze lib '/mypath/libdir/';
benutze SomeMod;

Sie können auch Hooks in das Dateieinschlusssystem einfügen, indem Sie Perl-Code einfügen
direkt in @INC. Diese Hooks können Unterprogrammreferenzen, Array-Referenzen usw. sein
gesegnete Objekte. Weitere Informationen finden Sie unter „require“ in perlfunc.

%INC Der Hash %INC enthält Einträge für jeden Dateinamen, der über „do“, „require“,
oder „use“-Operatoren. Der Schlüssel ist der von Ihnen angegebene Dateiname (mit Modulnamen).
in Pfadnamen konvertiert) und der Wert ist der Speicherort der gefundenen Datei. Der
Der „require“-Operator verwendet diesen Hash, um zu bestimmen, ob eine bestimmte Datei vorhanden ist
bereits enthalten.

Wenn die Datei über einen Hook geladen wurde (z. B. eine Subroutinenreferenz, siehe „require“ in
perlfunc für eine Beschreibung dieser Hooks), dieser Hook wird standardmäßig in eingefügt
%INC anstelle eines Dateinamens. Beachten Sie jedoch, dass der Hook möglicherweise den %INC gesetzt hat
Eintrag für sich allein, um genauere Informationen bereitzustellen.

$INPLACE_EDIT
$^I Der aktuelle Wert der Inplace-Edit-Erweiterung. Verwenden Sie „undef“, um Inplace zu deaktivieren
Bearbeitung.

Mnemonik: Wert von -i Schalter.

$^M Standardmäßig ist der Speichermangel ein nicht auffindbarer, schwerwiegender Fehler. Wie auch immer, wenn
Bei geeignetem Aufbau kann Perl anschließend den Inhalt von $^M als Notfallspeicherpool verwenden
"sterben()"ing. Angenommen, Ihr Perl wurde mit „-DPERL_EMERGENCY_SBRK“ kompiliert und
verwendete Malloc von Perl. Dann

$^M = 'a' x (1 << 16);

würde einen 64-KByte-Puffer für den Notfall zuweisen. Siehe die INSTALLIEREN Datei in das
Informationen zum Hinzufügen benutzerdefinierter C-Kompilierungsflags finden Sie in der Perl-Distribution
Perl kompilieren. Es gibt keine Möglichkeit, die gelegentliche Nutzung dieser erweiterten Funktion zu verhindern
Englischer Langname für diese Variable.

Diese Variable wurde in Perl 5.004 hinzugefügt.

$OSNAME
$^O Der Name des Betriebssystems, unter dem diese Kopie von Perl erstellt wurde, as
wird während des Konfigurationsprozesses festgelegt. Beispiele finden Sie unter „PLATTFORMEN“ in
perlport.

Der Wert ist identisch mit $Config{'osname'}. Siehe auch Config und die -V Befehl-
Leitungswechsel in Perlrun dokumentiert.

Auf Windows-Plattformen ist $^O nicht sehr hilfreich: Da es immer „MSWin32“ ist, ist es
erkennt keinen Unterschied zwischen 95/98/ME/NT/2000/XP/CE/.NET. Verwenden
„Win32::GetOSName()“ oder Win32::GetOSVersion() (siehe Win32 und Perlport) zu
zwischen den Varianten unterscheiden.

Diese Variable wurde in Perl 5.003 hinzugefügt.

%SIG Der Hash %SIG enthält Signalhandler für Signale. Zum Beispiel:

sub handler { # 1. Argument ist der Signalname
my($sig) = @_;
print „SIG$sig abgefangen – wird heruntergefahren\n“;
close(LOG);
wunsch(0);
}

$SIG{'INT'} = \&handler;
$SIG{'QUIT'} = \&handler;
...
$SIG{'INT'} = 'DEFAULT'; # Standardaktion wiederherstellen
$SIG{'QUIT'} = 'IGNORIEREN'; # SIGQUIT ignorieren

Die Verwendung des Werts „IGNORE“ hat normalerweise den Effekt, dass das Signal ignoriert wird, außer
für das „CHLD“-Signal. Weitere Informationen zu diesem Sonderfall finden Sie unter perlipc.

Hier sind einige weitere Beispiele:

$SIG{"PIPE"} = "Klempner"; # setzt main::Plumber voraus (nicht
# empfohlen)
$SIG{"PIPE"} = \&Plumber; # Alles gut; aktuell annehmen
# Klempner
$SIG{"PIPE"} = *Plumber; # etwas esoterisch
$SIG{"PIPE"} = Klempner(); # Hoppla, was hat Plumber() gemacht?
# zurückkehren??

Achten Sie darauf, dass Sie als Name eines Signalhandlers kein bloßes Wort verwenden, damit Sie nicht davon betroffen sind
nenne es versehentlich.

Wenn Ihr System über die Funktion „sigaction()“ verfügt, sind Signalhandler installiert
es benutzen. Das bedeutet, dass Sie eine zuverlässige Signalverarbeitung erhalten.

Die Standardübermittlungsrichtlinie für Signale wurde in Perl v5.8.0 von „Sofort“ (auch) geändert
bekannt als „unsicher“) zu verzögerten Signalen, auch bekannt als „sichere Signale“. Siehe perlipc für
mehr Informationen.

Bestimmte interne Hooks können auch mithilfe des %SIG-Hashs gesetzt werden. Die angegebene Routine
von $SIG{__WARN__} wird aufgerufen, wenn eine Warnmeldung gedruckt werden soll. Der
Als erstes Argument wird eine Warnmeldung übergeben. Das Vorhandensein eines „__WARN__“
Der Hook bewirkt, dass das normale Drucken von Warnungen an „STDERR“ unterdrückt wird. Du
kann damit Warnungen in einer Variablen speichern oder Warnungen in schwerwiegende Fehler umwandeln,
so was:

local $SIG{__WARN__} = sub { die $_[0] };
eval $proggie;

Da der Hook „IGNORE“ von „__WARN__“ nicht unterstützt wird, können Sie Warnungen deaktivieren
mit der leeren Unterroutine:

local $SIG{__WARN__} = sub {};

Die durch $SIG{__DIE__} angegebene Routine wird aufgerufen, wenn eine schwerwiegende Ausnahme vorliegt
geworfen werden. Als erstes Argument wird die Fehlermeldung übergeben. Wenn ein
Wenn die Hook-Routine „__DIE__“ zurückkehrt, wird die Ausnahmeverarbeitung wie gewohnt fortgesetzt
haben, wenn der Hook nicht vorhanden ist, es sei denn, die Hook-Routine selbst wird über ein „goto“ beendet
&sub“, ein Schleifenausgang oder ein „die()“. Der „__DIE__“-Handler ist explizit deaktiviert
während des Anrufs, so dass Sie an einem „__DIE__“-Handler sterben können. Ebenso für
"__WARNEN__".

Aufgrund eines Implementierungsfehlers wird der Hook $SIG{__DIE__} auch innerhalb von aufgerufen
„eval()“. Verwenden Sie dies nicht, um eine ausstehende Ausnahme in $@ umzuschreiben, oder als bizarre Angelegenheit
Ersatz für das Überschreiben von „CORE::GLOBAL::die()“. Diese seltsame Aktion bei a
Die Distanz kann in einer zukünftigen Version behoben werden, sodass $SIG{__DIE__} nur aufgerufen wird, wenn
Ihr Programm steht kurz vor dem Beenden, wie es ursprünglich beabsichtigt war. Jede andere Verwendung ist möglich
veraltet.

„__DIE__“/„__WARN__“-Handler sind in einer Hinsicht etwas ganz Besonderes: Sie können aufgerufen werden
um vom Parser gefundene (wahrscheinliche) Fehler zu melden. In einem solchen Fall kann der Parser sein
in einem inkonsistenten Zustand, also jeder Versuch, Perl-Code von einem solchen Handler auszuwerten
wird wahrscheinlich zu einem Segfault führen. Dies bedeutet, dass Warnungen oder Fehler auftreten
Ergebnis aus der Analyse Perl sollte mit äußerster Vorsicht verwendet werden, wie folgt:

erfordert Karpfen, wenn definiert $^S;
Carp::confess("Etwas stimmt nicht"), falls definiert &Carp::confess;
sterben „Etwas stimmt nicht, aber Carp konnte nicht geladen werden, um es zu geben“
. „Rückverfolgung...\n\t“
. „Um Backtrace zu sehen, starten Sie Perl mit dem Schalter -MCarp“;

Hier wird in der ersten Zeile „Carp“ geladen. es sei denn Es ist der Parser, der das aufgerufen hat
Handler. Die zweite Zeile gibt „Backtrace and Die“ aus, wenn „Carp“ verfügbar war.
Die dritte Zeile wird nur ausgeführt, wenn „Carp“ nicht verfügbar war.

Es ist einfach, überhaupt an die Variable $^S in Ihren Ausnahmehandlern zu denken
falsch. $SIG{__DIE__}, wie es derzeit implementiert ist, ist beschwerlich und schwierig
Fehler aufspüren. Vermeiden Sie es und verwenden Sie eine „END{}“- oder CORE::GLOBAL::die-Überschreibung
stattdessen.

Siehe „die“ in Perlfunc, „warn“ in Perlfunc, „eval“ in Perlfunc und Warnungen für
zusätzliche Information.

$BASETIME
$^T Der Zeitpunkt, zu dem das Programm mit der Ausführung begann, in Sekunden seit der Epoche (Beginn).
von 1970). Die von der zurückgegebenen Werte -M, -A und -C Filetests basieren darauf
Wert.

$PERL_VERSION
$^V Die Revision, Version und Subversion des Perl-Interpreters, dargestellt als
Versionsobjekt.

Diese Variable erschien erstmals in Perl v5.6.0; Frühere Versionen von Perl sehen eine
undefinierter Wert. Vor Perl v5.10.0 wurde $^V eher als V-String dargestellt
als ein Versionsobjekt.

$^V kann verwendet werden, um festzustellen, ob der Perl-Interpreter, der ein Skript ausführt, in ist
das richtige Variantenspektrum. Zum Beispiel:

warnen „Hashes nicht randomisiert!\n“, wenn !$^V oder $^V lt v5.8.1

Während Versionsobjekte die Stringifizierung überlasten, um $^V portierbar in seine zu konvertieren
Verwenden Sie für die String-Darstellung die „%vd“-Konvertierung von „sprintf()“, die für beide funktioniert
V-Strings oder Versionsobjekte:

printf "Version ist v%vd\n", $^V; # Perls Version

Eine praktische Möglichkeit finden Sie in der Dokumentation zu „VERSION verwenden“ und „VERSION erfordern“.
schlägt fehl, wenn der laufende Perl-Interpreter zu alt ist.

Siehe auch $] für eine Dezimaldarstellung der Perl-Version.

Der Hauptvorteil von $^V gegenüber $] besteht darin, dass es für Perl v5.10.0 oder höher zu einer Überladung führt
Operatoren, die einen einfachen Vergleich mit anderen Versionsdarstellungen ermöglichen (z
dezimaler, literaler V-String, „v1.2.3“ oder Objekte). Der Nachteil ist, dass vorher
Bis v5.10.0 war es nur ein wörtlicher V-String, der nicht einfach gedruckt werden kann oder
verglichen.

Mnemonik: Verwenden Sie ^V für ein Versionsobjekt.

${^WIN32_SLOPPY_STAT}
Wenn diese Variable auf einen wahren Wert gesetzt ist, versucht „stat()“ unter Windows dies nicht
öffne die Datei. Dies bedeutet, dass die Anzahl der Links nicht ermittelt und gespeichert werden kann
Attribute sind möglicherweise veraltet, wenn zusätzliche Hardlinks zur Datei vorhanden sind. Auf der
Andererseits geht es erheblich schneller, die Datei nicht zu öffnen, insbesondere bei Dateien auf
Netzlaufwerke.

Diese Variable kann im eingestellt werden sitecustomize.pl Datei zum Konfigurieren der lokalen Datei
Perl-Installation verwendet standardmäßig „sloppy“ „stat()“. Weitere Informationen finden Sie in der Dokumentation
-f Weitere Informationen zur Site-Anpassung finden Sie in perlrun.

Diese Variable wurde in Perl v5.10.0 hinzugefügt.

$EXECUTABLE_NAME
$^X Der Name, der zum Ausführen der aktuellen Perl-Kopie verwendet wird, aus Cs „argv[0]“ oder (wobei
unterstützt) /proc/self/exe.

Abhängig vom Host-Betriebssystem kann der Wert von $^X ein relativer oder sein
Absoluter Pfadname der Perl-Programmdatei oder die zum Aufruf verwendete Zeichenfolge
perl, aber nicht den Pfadnamen der Perl-Programmdatei. Auch die meisten Betriebssysteme
Erlauben Sie den Aufruf von Programmen, die sich nicht in der Umgebungsvariablen PATH befinden, also dort
Es gibt keine Garantie dafür, dass der Wert von $^X in PATH enthalten ist. Für VMS kann der Wert „may“ oder „may“ sein
keine Versionsnummer enthalten.

Normalerweise können Sie den Wert von $^X verwenden, um eine unabhängige Kopie desselben erneut aufzurufen
Perl, das gerade ausgeführt wird, z. B.

@first_run = `$^X -le "print int rand 100 für 1..100"`;

Beachten Sie jedoch, dass nicht alle Betriebssysteme das Forken oder Erfassen von Dateien unterstützen
Ausgabe von Befehlen, daher ist diese komplexe Anweisung möglicherweise nicht portierbar.

Es ist nicht sicher, den Wert von $^X als Pfadnamen einer Datei zu verwenden, wie es in manchen Fällen der Fall ist
Systeme, die ein obligatorisches Suffix für ausführbare Dateien haben, erfordern die Verwendung von nicht
Suffix beim Aufrufen eines Befehls. Um den Wert von $^X in einen Pfadnamen umzuwandeln, verwenden Sie
die folgenden Aussagen:

# Erstellen Sie eine Reihe von Dateinamen (keine Befehlsnamen).
Konfig verwenden;
mein $this_perl = $^X;
if ($^O ne 'VMS') {
$this_perl .= $Config{_exe}
es sei denn $this_perl =~ m/$Config{_exe}$/i;
}

Denn viele Betriebssysteme erlauben jedem mit Lesezugriff auf das Perl-Programm
Datei, um eine Kopie davon zu erstellen, die Kopie zu patchen und dann die Kopie auszuführen
Sicherheitsbewusste Perl-Programmierer sollten darauf achten, die installierte Kopie aufzurufen
von Perl, nicht die Kopie, auf die durch $^X verwiesen wird. Dies wird durch die folgenden Aussagen erreicht
Ziel und erzeugen Sie einen Pfadnamen, der als Befehl aufgerufen oder als referenziert werden kann
Datei.

Konfig verwenden;
my $secure_perl_path = $Config{perlpath};
if ($^O ne 'VMS') {
$secure_perl_path .= $Config{_exe}
es sei denn $secure_perl_path =~ m/$Config{_exe}$/i;
}

Variablen bezogene zu regulär Ausdrücke
Die meisten speziellen Variablen im Zusammenhang mit regulären Ausdrücken sind Nebenwirkungen. Perl-Sets
Diese Variablen werden bei einem erfolgreichen Match gelöscht. Daher sollten Sie das Match-Ergebnis überprüfen
bevor Sie sie verwenden. Zum Beispiel:

if( /P(A)TT(ER)N/ ) {
print „Ich habe $1 und $2 gefunden\n“;
}

Diese Variablen sind schreibgeschützt und haben einen dynamischen Gültigkeitsbereich, sofern wir nichts anderes vermerken.

Aufgrund der dynamischen Natur der regulären Ausdrucksvariablen ist ihr Wert begrenzt
zu dem Block, in dem sie sich befinden, wie durch diesen Code gezeigt:

my $outer = 'Wallace und Grommit';
my $inner = 'Mutt und Jeff';

my $pattern = qr/(\S+) and (\S+)/;

sub show_n { print "\$1 ist $1; \$2 ist $2\n" }

{
ÄUSSERE:
show_n() if $outer =~ m/$pattern/;

INNERE: {
show_n() if $inner =~ m/$pattern/;
}

gezeigt();
}

Die Ausgabe zeigt, dass im Block „OUTER“ die Werte von $1 und $2 aus dem stammen
Spiel gegen $outer. Im Block „INNER“ stammen die Werte von $1 und $2 aus dem
Übereinstimmung mit $inner, aber nur bis zum Ende des Blocks (dh dem dynamischen Bereich). Nach
Wenn der „INNER“-Block abgeschlossen ist, kehren die Werte von $1 und $2 zu den Werten für die Übereinstimmung zurück
gegen $outer, obwohl wir kein weiteres Match gemacht haben:

1 $ ist Wallace; 2 $ sind Grommit
1 $ ist Mutt; 2 $ ist Jeff
1 $ ist Wallace; 2 $ sind Grommit

Kennzahlen Probleme

Traditionell ist in Perl jede Verwendung einer der drei Variablen „$`“, $& oder „$‘“ (oder deren
„Use English“-Äquivalente) an einer beliebigen Stelle im Code verursachte alle nachfolgenden erfolgreichen Muster
Übereinstimmungen, um eine Kopie der übereinstimmenden Zeichenfolge zu erstellen, für den Fall, dass der Code später darauf zugreift
eine dieser Variablen. Dies führte insgesamt zu erheblichen Leistungseinbußen
Daher wird generell von der Verwendung dieser Variablen abgeraten.

In Perl 5.6.0 wurden die dynamischen Arrays „@-“ und „@+“ eingeführt, die die Indizes von bereitstellen
erfolgreiche Spiele. Sie könnten also zum Beispiel Folgendes tun:

$str =~ /muster/;

drucken $`, $&, $'; # schlecht: Leistungseinbußen

print # gut: kein Leistungseinbruch
substr($str, 0, $-[0]),
substr($str, $-[0], $+[0]-$-[0]),
substr($str, $+[0]);

In Perl 5.10.0 das „/p“-Match-Operator-Flag und die „${^PREMATCH}“, „${^MATCH}“ und
Es wurden „${^POSTMATCH}“-Variablen eingeführt, die es Ihnen ermöglichten, nur die Strafen zu erleiden
auf Mustern, die mit „/p“ gekennzeichnet sind.

Ab Perl 5.18.0 begann Perl, das Vorhandensein jeder der drei Variablen zu bemerken
separat und kopiert nur den erforderlichen Teil der Zeichenfolge; also rein

$`; $&; "abcdefgh" =~ /d/

Perl würde nur den „abcd“-Teil der Zeichenfolge kopieren. Das könnte einen großen Unterschied machen
etwas wie

$str = 'x' x 1_000_000;
$&; # Hoppla
$str =~ /x/g # Ein Zeichen wird eine Million Mal kopiert, nicht eine Million Zeichen

In Perl 5.20.0 wurde standardmäßig ein neues Copy-on-Write-System aktiviert, das endlich alles behebt
Beseitigt Leistungsprobleme mit diesen drei Variablen und sorgt dafür, dass sie überall sicher verwendet werden können.

Die Module „Devel::NYTProf“ und „Devel::FindAmpersand“ können Ihnen dabei helfen, Verwendungsmöglichkeiten dafür zu finden
problematische Übereinstimmungsvariablen in Ihrem Code.

$<Ziffern> ($1, $2, ...)
Enthält das Untermuster aus dem entsprechenden Satz einfangender Klammern von
der letzte erfolgreiche Musterabgleich, wobei Muster, die in verschachtelten Blöcken abgeglichen wurden, nicht gezählt werden
die bereits verlassen wurden.

Diese Variablen sind schreibgeschützt und haben einen dynamischen Gültigkeitsbereich.

Mnemonik: wie \digits.

$MATCH
$& Die Zeichenfolge, mit der der letzte erfolgreiche Mustervergleich übereinstimmte (übereinstimmungen werden nicht gezählt).
versteckt in einem BLOCK oder „eval()“, eingeschlossen im aktuellen BLOCK).

Weitere Informationen zu den schwerwiegenden Auswirkungen der Verwendung auf die Leistung finden Sie oben unter „Leistungsprobleme“.
diese Variable (auch einmal) in Ihrem Code.

Diese Variable ist schreibgeschützt und hat einen dynamischen Gültigkeitsbereich.

Mnemonik: wie „&“ in einigen Editoren.

${^MATCH}
Dies ähnelt $& ($MATCH), außer dass dadurch keine Leistung entsteht
Strafe, die mit dieser Variablen verbunden ist.

Siehe „Leistungsprobleme“ oben.

In Perl v5.18 und früher ist die Rückgabe eines definierten Werts nur garantiert, wenn
Das Muster wurde mit dem Modifikator „/p“ kompiliert oder ausgeführt. In Perl v5.20 ist die
Der Modifikator „/p“ bewirkt nichts, daher bewirkt „${^MATCH}“ dasselbe wie $MATCH.

Diese Variable wurde in Perl v5.10.0 hinzugefügt.

Diese Variable ist schreibgeschützt und hat einen dynamischen Gültigkeitsbereich.

$PREMATCH
$` Die Zeichenfolge vor dem, was bei der letzten erfolgreichen Musterübereinstimmung gefunden wurde,
Es werden keine Übereinstimmungen gezählt, die in einem vom aktuellen eingeschlossenen BLOCK oder „eval“ verborgen sind
BLOCK.

Weitere Informationen zu den schwerwiegenden Auswirkungen der Verwendung auf die Leistung finden Sie oben unter „Leistungsprobleme“.
diese Variable (auch einmal) in Ihrem Code.

Diese Variable ist schreibgeschützt und hat einen dynamischen Gültigkeitsbereich.

Mnemonik: „`“ steht oft vor einer Zeichenfolge in Anführungszeichen.

${^PREMATCH}
Dies ähnelt „$`“ ($PREMATCH), außer dass dadurch keine Leistung entsteht
Strafe, die mit dieser Variablen verbunden ist.

Siehe „Leistungsprobleme“ oben.

In Perl v5.18 und früher ist die Rückgabe eines definierten Werts nur garantiert, wenn
Das Muster wurde mit dem Modifikator „/p“ kompiliert oder ausgeführt. In Perl v5.20 ist die
Der Modifikator „/p“ bewirkt nichts, daher bewirkt „${^PREMATCH}“ dasselbe wie $PREMATCH.

Diese Variable wurde in Perl v5.10.0 hinzugefügt.

Diese Variable ist schreibgeschützt und hat einen dynamischen Gültigkeitsbereich.

$POSTMATCH
$' Die Zeichenfolge, die auf alles folgt, was bei der letzten erfolgreichen Musterübereinstimmung gefunden wurde
(Alle Übereinstimmungen, die innerhalb eines BLOCKs oder „eval()“ versteckt sind, werden nicht gezählt
aktuellen BLOCK). Beispiel:

local $_ = 'abcdefghi';
/def/;
print "$`:$&:$'\n"; # gibt abc:def:ghi aus

Weitere Informationen zu den schwerwiegenden Auswirkungen der Verwendung auf die Leistung finden Sie oben unter „Leistungsprobleme“.
diese Variable (auch einmal) in Ihrem Code.

Diese Variable ist schreibgeschützt und hat einen dynamischen Gültigkeitsbereich.

Mnemonik: „'“ folgt oft einer Zeichenfolge in Anführungszeichen.

${^POSTMATCH}
Dies ähnelt „$‘“ ($POSTMATCH), außer dass dadurch keine Leistung entsteht
Strafe, die mit dieser Variablen verbunden ist.

Siehe „Leistungsprobleme“ oben.

In Perl v5.18 und früher ist die Rückgabe eines definierten Werts nur garantiert, wenn
Das Muster wurde mit dem Modifikator „/p“ kompiliert oder ausgeführt. In Perl v5.20 ist die
Der Modifikator „/p“ bewirkt nichts, daher bewirkt „${^POSTMATCH}“ dasselbe wie $POSTMATCH.

Diese Variable wurde in Perl v5.10.0 hinzugefügt.

Diese Variable ist schreibgeschützt und hat einen dynamischen Gültigkeitsbereich.

$LAST_PAREN_MATCH
$+ Der Text, der mit der letzten Klammer des letzten erfolgreichen Suchmusters übereinstimmt. Das
ist nützlich, wenn Sie nicht wissen, welches Muster aus einer Reihe alternativer Muster übereinstimmt.
Beispielsweise:

/Version: (.*)|Revision: (.*)/ && ($rev = $+);

Diese Variable ist schreibgeschützt und hat einen dynamischen Gültigkeitsbereich.

Gedächtnisstütze: Seien Sie positiv und zukunftsorientiert.

$LAST_SUBMATCH_RESULT
$^N Der Text, der mit der verwendeten Gruppe übereinstimmt, die zuletzt geschlossen wurde (d. h. die Gruppe mit dem
schließende Klammer ganz rechts) des letzten erfolgreichen Suchmusters.

Dies wird hauptsächlich innerhalb von „(?{...})“-Blöcken verwendet, um kürzlich Text zu untersuchen
abgestimmt. Um beispielsweise Text effektiv in einer Variablen zu erfassen (zusätzlich zu
$1, $2 usw.), ersetzen Sie „(...)“ durch

(?:(...)(?{ $var = $^N }))

Wenn Sie $var auf diese Weise festlegen und dann verwenden, müssen Sie sich keine Sorgen mehr machen
genau, um welche nummerierten Klammern es sich handelt.

Diese Variable wurde in Perl v5.8.0 hinzugefügt.

Mnemonik: die (möglicherweise) verschachtelte Klammer, die zuletzt geschlossen wurde.

@LAST_MATCH_END
@+ Dieses Array enthält die Offsets der Enden der letzten erfolgreichen Teilübereinstimmungen im
aktuell aktiver dynamischer Bereich. $+[0] ist der Offset in die Zeichenfolge des Endes von
das gesamte Spiel. Dies ist derselbe Wert, den die Funktion „pos“ wann zurückgibt
wird für die Variable aufgerufen, mit der abgeglichen wurde. Der nElement dieses Arrays
enthält den Offset des nDie Unterübereinstimmung, also ist $+[1] der Offset nach dem Ende von $1,
$+[2] der Versatz nach dem Ende von $2 und so weiter. Sie können $#+ verwenden, um zu bestimmen, wie
Viele Untergruppen waren im letzten erfolgreichen Spiel. Siehe die Beispiele für die
„@-“-Variable.

Diese Variable wurde in Perl v5.6.0 hinzugefügt.

%LAST_PAREN_MATCH
%+ Ähnlich wie „@+“ ermöglicht der Hash „%+“ den Zugriff auf die benannten Capture-Puffer
Sie existieren im letzten erfolgreichen Match im aktuell aktiven dynamischen Bereich.

Beispielsweise entspricht $+{foo} nach der folgenden Übereinstimmung $1:

'foo' =~ /(? foo)/;

Die Schlüssel des „%+“-Hashs listen nur die Namen der Puffer auf, die erfasst wurden (und
die somit definierten Werten zugeordnet sind).

Das zugrunde liegende Verhalten von „%+“ wird von Tie::Hash::NamedCapture bereitgestellt
Modul.

Hinweis: „%-“ und „%+“ sind verknüpfte Ansichten in einem gemeinsamen internen Hash, der dem zugeordnet ist
Letzter erfolgreicher regulärer Ausdruck. Daher wird der iterative Zugriff auf sie über gemischt
„each“ kann zu unvorhersehbaren Ergebnissen führen. Ebenso, wenn das letzte erfolgreiche Spiel
Änderungen, dann können die Ergebnisse überraschend sein.

Diese Variable wurde in Perl v5.10.0 hinzugefügt.

Diese Variable ist schreibgeschützt und hat einen dynamischen Gültigkeitsbereich.

@LAST_MATCH_START
@- „$-[0]“ ist der Offset vom Beginn des letzten erfolgreichen Spiels. „$-[“n"]" ist der
Offset des Anfangs der Teilzeichenfolge, mit der übereinstimmt n-tes Untermuster oder undef, wenn das
Untermuster stimmte nicht überein.

Somit stimmt $& nach einem Match gegen $_ mit „substr $_, $-[0], $+[0] - überein“
$-[0]". Ebenso $n stimmt mit „substr $_, $-[n], $+[n] – $-[n]“ überein, wenn „$-[n]“
definiert ist und $+ mit „substr $_, $-[$#-], $+[$#-] - $-[$#-]“ übereinstimmt. Eins
kann „$#-“ verwenden, um die letzte übereinstimmende Untergruppe im letzten erfolgreichen Match zu finden.
Im Gegensatz zu $#+ die Anzahl der Untergruppen im regulären Ausdruck. Vergleichen
mit „@+“.

Dieses Array enthält die Offsets der Anfänge der letzten erfolgreichen Teilübereinstimmungen
im aktuell aktiven dynamischen Bereich. „$-[0]“ ist der Offset in der Zeichenfolge von
der Beginn des gesamten Spiels. Der nDas Element dieses Arrays enthält den Offset
dauert ebenfalls 3 Jahre. Das erste Jahr ist das sog. nUnterübereinstimmung, also ist „$-[1]“ der Offset, bei dem $1 beginnt, „$-[2]“ der Offset
wo $2 beginnt und so weiter.

Nach einem Match gegen eine Variable $var:

„$`“ ist dasselbe wie „substr($var, 0, $-[0])“
$& ist dasselbe wie „substr($var, $-[0], $+[0] – $-[0])“
„$‘“ ist dasselbe wie „substr($var, $+[0])“
$1 ist dasselbe wie „substr($var, $-[1], $+[1] – $-[1])“
$2 ist dasselbe wie „substr($var, $-[2], $+[2] – $-[2])“
$3 ist dasselbe wie „substr($var, $-[3], $+[3] – $-[3])“

Diese Variable wurde in Perl v5.6.0 hinzugefügt.

%LAST_MATCH_START
%- Ähnlich wie „%+“ ermöglicht diese Variable den Zugriff auf die benannten Capture-Gruppen im
letzte erfolgreiche Übereinstimmung im aktuell aktiven dynamischen Bereich. Zu jeder Aufnahme
Wenn Sie den Gruppennamen im regulären Ausdruck finden, verknüpft er einen Verweis auf ein Array
Enthält die Liste der Werte, die von allen Puffern mit diesem Namen erfasst wurden (sollte dort vorhanden sein).
mehrere davon sein), in der Reihenfolge, in der sie erscheinen.

Hier ist ein Beispiel:

if ('1234' =~ /(? 1)(? 2)(? 3)(? 4)/) {
foreach my $bufname (Sortierschlüssel %-) {
mein $ary = $-{$bufname};
foreach my $idx (0..$#$ary) {
print „\$-{$bufname}[$idx] :“,
(definiert($ary->[$idx])
? "'$ary->[$idx]'"
: „undef“),
"\n";
}
}
}

würde ausdrucken:

$-{A}[0] : '1'
$-{A}[1] : '3'
$-{B}[0] : '2'
$-{B}[1] : '4'

Die Schlüssel des „%-“-Hashs entsprechen allen in der regulären Datei gefundenen Puffernamen
Ausdruck.

Das Verhalten von „%-“ wird über das Modul Tie::Hash::NamedCapture implementiert.

Hinweis: „%-“ und „%+“ sind verknüpfte Ansichten in einem gemeinsamen internen Hash, der dem zugeordnet ist
Letzter erfolgreicher regulärer Ausdruck. Daher wird der iterative Zugriff auf sie über gemischt
„each“ kann zu unvorhersehbaren Ergebnissen führen. Ebenso, wenn das letzte erfolgreiche Spiel
Änderungen, dann können die Ergebnisse überraschend sein.

Diese Variable wurde in Perl v5.10.0 hinzugefügt.

Diese Variable ist schreibgeschützt und hat einen dynamischen Gültigkeitsbereich.

$LAST_REGEXP_CODE_RESULT
$^R Das Ergebnis der Auswertung des letzten erfolgreichen regulären Ausdrucks „(?{ code })“.
Behauptung (siehe perlre). Kann angeschrieben werden.

Diese Variable wurde in Perl 5.005 hinzugefügt.

${^RE_DEBUG_FLAGS}
Der aktuelle Wert der Regex-Debugging-Flags. Auf 0 setzen, auch wenn keine Debug-Ausgabe erfolgt
wenn das Modul „re ‚debug‘“ geladen wird. Weitere Informationen finden Sie unter re.

Diese Variable wurde in Perl v5.10.0 hinzugefügt.

${^RE_TRIE_MAXBUF}
Steuert, wie bestimmte Regex-Optimierungen angewendet werden und wie viel Speicher sie benötigen
nutzen. Dieser Wert ist standardmäßig 65536, was einer temporären Datei mit 512 KB entspricht
Zwischenspeicher. Stellen Sie diesen Wert auf einen höheren Wert ein, um beim Abgleichen mit großen Werten Speicher gegen Geschwindigkeit einzutauschen
Abwechslung. Stellen Sie den Wert auf einen niedrigeren Wert ein, wenn die Optimierungen so sein sollen
möglichst speicherschonend, aber trotzdem auftreten, und setzen Sie ihn auf einen negativen Wert
um die Optimierung zu verhindern und den größtmöglichen Speicher zu sparen. Unter normalen Umständen
Diese Variable dürfte für Sie uninteressant sein.

Diese Variable wurde in Perl v5.10.0 hinzugefügt.

Variablen bezogene zu Dateihandles
Variablen, die vom aktuell ausgewählten Dateihandle abhängen, können durch Aufrufen von an festgelegt werden
entsprechende Objektmethode für das Objekt „IO::Handle“, obwohl dies weniger effizient ist als
Verwendung der regulären integrierten Variablen. (Die folgenden Zusammenfassungszeilen hierzu enthalten das Wort
GRIFF.) Zuerst müssen Sie sagen

IO::Handle verwenden;

Danach können Sie beides verwenden

Methode HANDLE EXPR

oder sicherer,

HANDLE->Methode(EXPR)

Jede Methode gibt den alten Wert des Attributs „IO::Handle“ zurück. Die Methoden dauern jeweils eine
optionaler EXPR, der, sofern angegeben, den neuen Wert für das Attribut „IO::Handle“ angibt
fraglich. Wenn nicht angegeben, haben die meisten Methoden keine Auswirkung auf den aktuellen Wert – außer
„autoflush()“, das für Sie eine 1 annimmt, nur um es anders zu machen.

Da das Laden in der Klasse „IO::Handle“ ein teurer Vorgang ist, sollten Sie lernen, wie das geht
um die regulären integrierten Variablen zu verwenden.

Einige dieser Variablen gelten als „schreibgeschützt“. Dies bedeutet, dass, wenn Sie versuchen, zuzuweisen
Auf diese Variable, entweder direkt oder indirekt über eine Referenz, lösen Sie eine Run- aus.
Zeitausnahme.

Sie sollten beim Ändern der Standardwerte der meisten speziellen Variablen sehr vorsichtig sein
in diesem Dokument beschrieben. In den meisten Fällen möchten Sie diese Variablen vorher lokalisieren
Ändern Sie sie, denn wenn Sie dies nicht tun, kann sich die Änderung auf andere Module auswirken, die darauf basieren
Standardwerte der speziellen Variablen, die Sie geändert haben. Das ist eines der Richtigen
Möglichkeiten, die gesamte Datei auf einmal zu lesen:

öffne mein $fh, „<“, „foo“ oder stirb $!;
lokal $/; # Lokalisierten Schlürfmodus aktivieren
mein $content = <$fh>;
schließen $fh;

Aber der folgende Code ist ziemlich schlecht:

öffne mein $fh, „<“, „foo“ oder stirb $!;
undef $/; # Schlürfmodus aktivieren
mein $content = <$fh>;
schließen $fh;

Da ein anderes Modul möglicherweise Daten aus einer Datei im standardmäßigen „Zeilenmodus“ lesen möchte,
Wenn also der Code, den wir gerade vorgestellt haben, ausgeführt wurde, beträgt der globale Wert von $/ jetzt
für jeden anderen Code geändert, der im selben Perl-Interpreter ausgeführt wird.

Wenn eine Variable lokalisiert wird, möchten Sie normalerweise sicherstellen, dass sich diese Änderung auf die Variable auswirkt
kürzest möglicher Umfang. Es sei denn, Sie befinden sich bereits in einem kurzen „{}“-Block
sollte selbst eines erstellen. Zum Beispiel:

mein $content = '';
öffne mein $fh, „<“, „foo“ oder stirb $!;
{
lokal $/;
$content = <$fh>;
}
schließen $fh;

Hier ist ein Beispiel dafür, wie Ihr eigener Code kaputt gehen kann:

für ( 1..3 ){
$\ = "\r\n";
nasty_break();
print „$_“;
}

sub nasty_break {
$\ = "\f";
# etwas mit $_ machen
}

Sie erwarten wahrscheinlich, dass dieser Code das Äquivalent von ausgibt

„1\r\n2\r\n3\r\n“

aber stattdessen erhalten Sie:

"1\f2\f3\f"

Warum? Weil „nasty_break()“ „$\“ ändert, ohne es vorher zu lokalisieren. Der von Ihnen festgelegte Wert
in „nasty_break()“ ist immer noch da, wenn Sie zurückkehren. Die Lösung besteht darin, „local()“ hinzuzufügen
Wert dringt nicht aus „nasty_break()“ heraus:

local $\ = "\f";

In einem so kurzen Beispiel ist das Problem leicht zu erkennen, in einem komplizierteren Code jedoch schon
Sie suchen nach Problemen, wenn Sie Änderungen an den speziellen Variablen nicht lokalisieren.

$ARGV Enthält den Namen der aktuellen Datei beim Lesen von „<>“.

@ARGV Das Array @ARGV enthält die für das Skript vorgesehenen Befehlszeilenargumente.
$#ARGV ist im Allgemeinen die Anzahl der Argumente minus eins, da $ARGV[0] die ist
erstes Argument, nicht der Befehlsname des Programms selbst. Den Befehl finden Sie unter „$0“.
Namen.

ARGV Das spezielle Dateihandle, das Befehlszeilendateinamen in @ARGV durchläuft.
Wird normalerweise als Null-Dateihandle im Winkeloperator „<>“ geschrieben. Beachten Sie, dass
derzeit hat „ARGV“ seine magische Wirkung nur innerhalb des Operators „<>“; anderswo
Es handelt sich lediglich um ein einfaches Dateihandle, das der zuletzt mit „<>“ geöffneten Datei entspricht. In
Insbesondere wird „\*ARGV“ als Parameter an eine Funktion übergeben, die a erwartet
Das Dateihandle führt möglicherweise nicht dazu, dass Ihre Funktion den Inhalt aller Dateien automatisch liest
die Dateien in @ARGV.

ARGVOUT Das spezielle Dateihandle, das beim Ausführen auf die aktuell geöffnete Ausgabedatei verweist
Edit-in-Place-Verarbeitung mit -i. Nützlich, wenn Sie viel einfügen müssen
und möchte $_ nicht ständig ändern. Siehe perlrun für -i Schalter.

IO::Handle->output_field_separator( EXPR )
$OUTPUT_FIELD_SEPARATOR
$OFS
$, Das Ausgabefeldtrennzeichen für den Druckoperator. Falls definiert, ist dieser Wert
wird zwischen den einzelnen Argumenten von print gedruckt. Der Standardwert ist „undef“.

Sie können „output_field_separator()“ nicht für ein Handle aufrufen, sondern nur als statische Methode.
Siehe IO::Handle.

Mnemonik: Was wird gedruckt, wenn Ihre print-Anweisung ein „“ enthält?

HANDLE->input_line_number( EXPR )
$INPUT_LINE_NUMBER
$NR
$. Aktuelle Zeilennummer für das zuletzt aufgerufene Dateihandle.

Jedes Dateihandle in Perl zählt die Anzahl der Zeilen, die daraus gelesen wurden.
(Abhängig vom Wert von $/ stimmt Perls Vorstellung davon, was eine Linie ausmacht, möglicherweise nicht überein
passen zu Ihrem.) Wenn eine Zeile aus einem Dateihandle gelesen wird (über „readline()“ oder „<>“),
oder wenn „tell()“ oder „seek()“ darauf aufgerufen wird, $. wird zu einem Alias ​​für die Zeile
Zähler für dieses Dateihandle.

Sie können den Zähler anpassen, indem Sie $. zuweisen, aber dadurch wird der nicht tatsächlich verschoben
Zeiger suchen. Lokalisieren $. werden wir nicht lokalisieren Dateihandles Linie zählen.
Stattdessen wird Perls Vorstellung davon lokalisiert, welches Dateihandle $ ist. ist gerade
Alias ​​auf.

$. wird zurückgesetzt, wenn das Dateihandle geschlossen wird, aber nicht wenn ein offenes Dateihandle ist
ohne dazwischenliegendes „close()“ wieder geöffnet. Weitere Einzelheiten finden Sie unter „E/A-Operatoren“.
in perlop. Da „<>“ niemals einen expliziten Abschluss durchführt, erhöhen sich die Zeilennummern
über „ARGV“-Dateien hinweg (siehe Beispiele in „eof“ in perlfunc).

Sie können auch über „HANDLE->input_line_number(EXPR)“ auf den Zeilenzähler zugreifen
ein bestimmtes Dateihandle, ohne sich Gedanken darüber machen zu müssen, auf welches Handle Sie zuletzt zugegriffen haben.

Mnemonik: Viele Programme verwenden „.“ bedeutet die aktuelle Zeilennummer.

IO::Handle->input_record_separator( EXPR )
$INPUT_RECORD_SEPARATOR
$RS
$/ Das Trennzeichen für Eingabedatensätze, standardmäßig Newline. Dies beeinflusst Perls Vorstellung von
was für eine „Linie“ ist. Funktioniert wie awk's RS-Variable, einschließlich der Behandlung leerer Zeilen als
ein Abschlusszeichen, wenn es auf die Nullzeichenfolge gesetzt ist (eine leere Zeile darf keine Leerzeichen oder enthalten).
Registerkarten). Sie können es auf eine Zeichenfolge mit mehreren Zeichen festlegen, um eine Übereinstimmung mit mehreren Zeichen zu erzielen
Terminator oder auf „undef“, um das Ende der Datei durchzulesen. Auf „\n\n“ setzen
bedeutet etwas etwas anderes als die Einstellung auf „“, wenn die Datei enthält
aufeinanderfolgende Leerzeilen. Bei der Einstellung „“ werden zwei oder mehr aufeinanderfolgende Leerzeichen behandelt
Zeilen als einzelne Leerzeile. Bei der Einstellung „\n\n“ wird blind davon ausgegangen, dass der nächste
Das Eingabezeichen gehört zum nächsten Absatz, auch wenn es sich um eine neue Zeile handelt.

lokal $/; # „Schlürfen“-Modus aktivieren
lokal $_ = ; # ganze Datei jetzt hier
s/\n[ \t]+/ /g;

Denken Sie daran: Der Wert von $/ ist ein String, kein regulärer Ausdruck. awk muss besser sein für
etwas. :-)

Setzen von $/ auf einen Verweis auf eine Ganzzahl, einen Skalar, der eine Ganzzahl enthält, oder einen Skalar
das in eine Ganzzahl konvertierbar ist, wird versuchen, Datensätze statt Zeilen zu lesen,
wobei die maximale Datensatzgröße die referenzierte ganzzahlige Anzahl von Zeichen ist.
Also das:

lokal $/ = \32768; # oder \"32768" oder \$var_tained_32768
öffne mein $fh, "<", $myfile oder die $!;
local $_ = <$fh>;

liest einen Datensatz mit maximal 32768 Zeichen aus $fh. Wenn du nicht bist
Lesen aus einer datensatzorientierten Datei (oder Ihr Betriebssystem verfügt nicht über eine datensatzorientierte Datei).
Dateien), dann erhalten Sie wahrscheinlich bei jedem Lesevorgang einen vollständigen Datenblock. Wenn ein Rekord
größer ist als die von Ihnen festgelegte Datensatzgröße, erhalten Sie den Datensatz in Teilen zurück.
Der Versuch, die Datensatzgröße auf Null oder weniger festzulegen, ist veraltet und führt zu $/
haben den Wert „undef“, was dazu führt, dass das (Rest-) Ganze gelesen wird
Datei.

Ab 5.19.9 führt das Festlegen von $/ auf eine andere Referenzform zu einem fatalen Fehler
Ausnahme. Dies dient als Vorbereitung für die Unterstützung neuer Möglichkeiten zur Festlegung von $/ in der Zukunft.

Nur auf VMS umgehen Datensatzlesevorgänge die PerlIO-Schichten und die damit verbundene Pufferung
Sie dürfen Datensatz- und Nicht-Datensatz-Lesevorgänge für dasselbe Dateihandle nicht mischen. Aufnahmemodus
mischt sich nur dann mit dem Leitungsmodus, wenn für beide Modi dieselbe Pufferschicht verwendet wird.

Sie können „input_record_separator()“ nicht für ein Handle aufrufen, sondern nur als statische Methode.
Siehe IO::Handle.

Siehe auch „Newlines“ in Perlport. Siehe auch „$.“

Mnemonik: / begrenzt Zeilengrenzen beim Zitieren von Gedichten.

IO::Handle->output_record_separator( EXPR )
$OUTPUT_RECORD_SEPARATOR
$ORS
$\ Das Ausgabedatensatztrennzeichen für den Druckoperator. Falls definiert, ist dieser Wert
wird nach dem letzten Argument von print gedruckt. Der Standardwert ist „undef“.

Sie können „output_record_separator()“ nicht für ein Handle aufrufen, sondern nur als statische Methode.
Siehe IO::Handle.

Mnemonik: Sie setzen „$\“, anstatt am Ende des Ausdrucks „\n“ hinzuzufügen. Außerdem ist es so
genau wie $/, aber es ist das, was man von Perl „zurückbekommt“.

HANDLE->autoflush( EXPR )
$OUTPUT_AUTOFLUSH
$| Bei einem Wert ungleich Null wird sofort und nach jedem Schreib- oder Druckvorgang ein Flush erzwungen
aktuell ausgewählten Ausgabekanal. Der Standardwert ist 0 (unabhängig davon, ob die
Kanal wirklich vom System gepuffert ist oder nicht; $| sagt Ihnen nur, ob Sie es getan haben
hat Perl ausdrücklich gebeten, nach jedem Schreibvorgang eine Spülung durchzuführen). STDOUT ist normalerweise eine Zeile
gepuffert, wenn die Ausgabe an das Terminal erfolgt, andernfalls blockgepuffert. Dies einstellen
Die Variable ist vor allem dann nützlich, wenn Sie die Ausgabe an eine Pipe oder einen Socket vornehmen, z
wenn Sie ein Perl-Programm unter ausführen rsh und möchte die Ausgabe so sehen, wie sie ist
Ereignis. Dies hat keine Auswirkung auf die Eingabepufferung. Siehe „getc“ in perlfunc für
Das. Informationen zum Auswählen des Ausgabekanals finden Sie unter „select“ in perlfunc. Siehe auch
IO::Handle.

Gedächtnisstütze: Wenn Sie möchten, dass Ihre Rohre kochend heiß sind.

${^LAST_FH}
Diese schreibgeschützte Variable enthält einen Verweis auf das zuletzt gelesene Dateihandle. Das ist
gesetzt durch „ ", "readline", "tell", "eof" und "seek". Dies ist das gleiche Handle
das $. und „tell“ und „eof“ ohne Argumente verwenden. Es ist auch der verwendete Griff
wenn Perl anhängt ", Zeile 1“ zu einer Fehler- oder Warnmeldung.

Diese Variable wurde in Perl v5.18.0 hinzugefügt.

Variablen bezogene zu Formate

Die speziellen Variablen für Formate sind eine Teilmenge derjenigen für Dateihandles. Siehe perlform für
Weitere Informationen zu Perl-Formaten.

$Akkumulator
$^A Der aktuelle Wert des „write()“-Akkumulators für „format()“-Zeilen. Ein Format
enthält „formline()“-Aufrufe, die ihr Ergebnis in $^A ablegen. Nach dem Aufruf
formatiert, gibt „write()“ den Inhalt von $^A aus und leert ihn. Also nie wirklich
Sehen Sie sich den Inhalt von $^A an, es sei denn, Sie rufen selbst „formline()“ auf und schauen ihn sich dann an.
Siehe perlform und „formline PICTURE,LIST“ in perlfunc.

IO::Handle->format_formfeed(EXPR)
$FORMAT_FORMFEED
$^L Welche Formate werden als Formularfeed ausgegeben? Der Standardwert ist „\f“.

Sie können „format_formfeed()“ nicht für ein Handle aufrufen, sondern nur als statische Methode. Sehen
IO::Handle.

HANDLE->format_page_number(EXPR)
$FORMAT_PAGE_NUMBER
$% Die aktuelle Seitennummer des aktuell ausgewählten Ausgabekanals.

Mnemonik: „%“ ist die Seitenzahl in Nroff.

HANDLE->format_lines_left(EXPR)
$FORMAT_LINES_LEFT
$- Die Anzahl der verbleibenden Zeilen auf der Seite des aktuell ausgewählten Ausgabekanals.

Mnemonik:lines_on_page –lines_printed.

IO::Handle->format_line_break_characters EXPR
$FORMAT_LINE_BREAK_CHARACTERS
$: Der aktuelle Zeichensatz, nach dem eine Zeichenfolge zum Füllen unterbrochen werden kann
Fortsetzungsfelder (beginnend mit „^“) in einem Format. Der Standardwert ist „\n-“, um
Umbruch bei einem Leerzeichen, einem Zeilenumbruch oder einem Bindestrich.

Sie können „format_line_break_characters()“ nicht für ein Handle aufrufen, sondern nur als statische Variable
Methode. Siehe IO::Handle.

Mnemonik: Ein „Doppelpunkt“ ist in der Poesie ein Teil einer Zeile.

HANDLE->format_lines_per_page(EXPR)
$FORMAT_LINES_PER_PAGE
$= Die aktuelle Seitenlänge (druckbare Zeilen) der aktuell ausgewählten Ausgabe
Kanal. Der Standardwert ist 60.

Mnemonik: = hat horizontale Linien.

HANDLE->format_top_name(EXPR)
$FORMAT_TOP_NAME
$^ Der Name des aktuellen Top-of-Page-Formats für die aktuell ausgewählte Ausgabe
Kanal. Der Standardwert ist der Name des Dateihandles mit angehängtem „_TOP“. Für
Beispielsweise lautet der Standardformat-Topname für das Dateihandle „STDOUT“ „STDOUT_TOP“.

Mnemonik: Zeigt zum Seitenanfang.

HANDLE->format_name(EXPR)
$FORMAT_NAME
$~ Der Name des aktuellen Berichtsformats für den aktuell ausgewählten Ausgabekanal.
Der Standardformatname ist derselbe wie der Dateihandle-Name. Zum Beispiel die
Der Standardformatname für das Dateihandle „STDOUT“ ist einfach „STDOUT“.

Mnemonik: Bruder von $^.

Fehler Variablen
Die Variablen $@, $!, $^E und $? enthalten Informationen zu verschiedenen Fehlerarten
Bedingungen, die während der Ausführung eines Perl-Programms auftreten können. Die Variablen werden angezeigt
geordnet nach der „Entfernung“ zwischen dem Subsystem, das den Fehler gemeldet hat, und dem Perl
Verfahren. Sie entsprechen Fehlern, die vom Perl-Interpreter und der C-Bibliothek erkannt wurden
System bzw. ein externes Programm.

Um die Unterschiede zwischen diesen Variablen zu veranschaulichen, betrachten Sie das folgende Perl
Ausdruck, der eine Zeichenfolge in einfachen Anführungszeichen verwendet. Nach der Ausführung dieser Anweisung wird perl
Möglicherweise wurden alle vier speziellen Fehlervariablen festgelegt:

eval q{
öffne meine $pipe, „/cdrom/install |“ oder stirb $!;
my @res = <$pipe>;
$pipe schließen oder sterben „bad pipe: $?, $!“;
};

Wenn Perl den Ausdruck „eval()“ ausführt, übersetzt es „open()“, „ ", Und
„close“-Aufrufe in der C-Laufzeitbibliothek und von dort an den Betriebssystemkernel. Perl
setzt $! an die „errno“ der C-Bibliothek, wenn einer dieser Aufrufe fehlschlägt.

$@ wird gesetzt, wenn die Zeichenfolge, die „ausgewertet“ werden soll, nicht kompiliert wurde (dies kann passieren, wenn „open“ oder
„close“ wurden mit fehlerhaften Prototypen importiert) oder wenn Perl-Code während der Evaluierung ausgeführt wurde
"gestorben. In diesen Fällen ist der Wert von $@ der Kompilierungsfehler oder das Argument für „die“
(wodurch $! und $? interpoliert werden). (Siehe jedoch auch Fatal.)

Unter einigen Betriebssystemen kann $^E einen ausführlicheren Fehlerindikator enthalten, z. B. in
In diesem Fall: „CD-ROM-Fach nicht geschlossen.“ Systeme, die keine erweiterten Fehlermeldungen unterstützen
Belassen Sie $^E wie $!.

Schließlich $? kann auf einen Wert ungleich 0 gesetzt werden, wenn das externe Programm /cdrom/install scheitert. Der
Die oberen acht Bits spiegeln spezifische Fehlerbedingungen wider, auf die das Programm stößt (die
"exit()"-Wert des Programms). Die unteren acht Bits spiegeln die Fehlerart wider, z. B. das Signal
Informationen zu Tod und Kerndeponie. Sehen warten(2) für Einzelheiten. Im Gegensatz zu $! und $^E,
die nur gesetzt werden, wenn eine Fehlerbedingung erkannt wird, die Variable $? wird bei jedem „Warten“ gesetzt
oder Pipe „close“, wobei der alte Wert überschrieben wird. Dies ähnelt eher $@, was bei jedem „eval()“ der Fall ist.
wird immer bei Misserfolg gesetzt und bei Erfolg gelöscht.

Weitere Einzelheiten finden Sie in den einzelnen Beschreibungen unter $@, $!, $^E und $?.

${^CHILD_ERROR_NATIVE}
Der native Status, der vom letzten Pipe-Close-Backtick-Befehl („``“) zurückgegeben wurde.
erfolgreicher Aufruf von „wait()“ oder „waitpid()“ oder vom Operator „system()“. An
Bei POSIX-ähnlichen Systemen kann dieser Wert mit den Befehlen WIFEXITED, WEXITSTATUS, dekodiert werden.
WIFSIGNALED-, WTERMSIG-, WIFSTOPPED-, WSTOPSIG- und WIFCONTINUED-Funktionen bereitgestellt von
das POSIX-Modul.

Unter VMS spiegelt dies den tatsächlichen VMS-Exit-Status wider; dh es ist dasselbe wie $? Wann
Das Pragma „use vmsish ‚status‘“ ist wirksam.

Diese Variable wurde in Perl v5.10.0 hinzugefügt.

$EXTENDED_OS_ERROR
$^E Fehlerinformationen speziell für das aktuelle Betriebssystem. Im Moment das
unterscheidet sich von $! nur unter VMS, OS/2 und Win32 (und für MacPerl). Auf alle anderen
Plattformen ist $^E immer genau dasselbe wie $!.

Unter VMS liefert $^E den VMS-Statuswert vom letzten Systemfehler. Das ist
spezifischere Informationen über den letzten Systemfehler als die von $! bereitgestellten.
Dies ist besonders wichtig, wenn $! ist eingestellt auf EVMSERR.

Unter OS/2 wird $^E entweder über auf den Fehlercode des letzten Aufrufs der OS/2-API gesetzt
CRT oder direkt von Perl.

Unter Win32 gibt $^E immer die letzten von Win32 gemeldeten Fehlerinformationen zurück
Rufen Sie „GetLastError()“ auf, das den letzten Fehler innerhalb der Win32-API beschreibt.
Der meiste Win32-spezifische Code meldet Fehler über $^E. ANSI C und Unix-ähnliche Aufrufe
Setzen Sie „errno“ und so melden die meisten portablen Perl-Codes Fehler über $!.

In der Beschreibung von $ erwähnte Vorbehalte! gelten im Allgemeinen auch für $^E.

Diese Variable wurde in Perl 5.003 hinzugefügt.

Mnemonik: Zusätzliche Fehlererklärung.

$EXCEPTIONS_BEING_CAUGHT
$^S Aktueller Status des Interpreters.

$^S Zustand
--------- -------------------------------------
undef Parsing-Modul, Eval oder Hauptprogramm
true (1) Eine Auswertung wird ausgeführt
false (0) Andernfalls

Der erste Zustand kann in den Handlern $SIG{__DIE__} und $SIG{__WARN__} auftreten.

Der englische Name $EXCEPTIONS_BEING_CAUGHT ist leicht irreführend, da der
Der Wert „undef“ gibt nicht an, ob Ausnahmen abgefangen werden, da
Die Kompilierung des Hauptprogramms fängt keine Ausnahmen ab.

Diese Variable wurde in Perl 5.004 hinzugefügt.

$WARNUNG
$^W Der aktuelle Wert des Warnschalters, zunächst wahr, wenn -w wurde verwendet, falsch
ansonsten aber direkt veränderbar.

Siehe auch Warnungen.

Mnemonik: bezogen auf die -w Schalter.

${^WARNING_BITS}
Der aktuelle Satz von Warnprüfungen, die durch das Pragma „Warnungen verwenden“ aktiviert werden. Es hat
derselbe Geltungsbereich wie die Variablen $^H und „%^H“. Es werden die genauen Werte berücksichtigt
Intern im Warnungs-Pragma und kann sich zwischen den Perl-Versionen ändern.

Diese Variable wurde in Perl v5.6.0 hinzugefügt.

$OS_ERROR
$ERRNO
$! Wenn darauf verwiesen wird, $! Ruft den aktuellen Wert der C-Ganzzahlvariablen „errno“ ab.
Wenn $! Wird ein numerischer Wert zugewiesen, wird dieser Wert in „errno“ gespeichert. Wann
als String referenziert, $! ergibt die entsprechende Systemfehlerzeichenfolge
„Fehler“.

Viele System- oder Bibliotheksaufrufe setzen „errno“, wenn sie fehlschlagen, um die Ursache anzugeben
Versagen. Normalerweise tun sie das nicht Setzen Sie „errno“ auf Null, wenn sie erfolgreich sind. Das heisst
„errno“, daher $!, ist nur sinnvoll sofort nach einem Fehler:

if (öffne mein $fh, „<“, $filename) {
# Hier $! ist bedeutungslos.
...
}
else {
# NUR hier ist $! sinnvoll.
...
# Schon da $! könnte bedeutungslos sein.
}
# Da wir hier entweder Erfolg oder Misserfolg haben könnten,
# $! ist bedeutungslos.

Hier bedeutungslos bedeutet, dass $! kann nichts mit dem Ergebnis von „open()“ zu tun haben
Operator. Zuordnung zu $! ist ähnlich vergänglich. Es kann sofort verwendet werden
bevor Sie den Operator „die()“ aufrufen, um den Exit-Wert festzulegen oder den zu überprüfen
Systemfehlerzeichenfolge, die dem Fehler entspricht n, oder um $ wiederherzustellen! zu einem sinnvollen
Zustand.

Gedächtnisstütze: Was ist da gerade gelaufen?

%OS_ERROR
%ERRNO
%! Jedes Element von „%!“ hat nur dann einen wahren Wert, wenn $! wird auf diesen Wert gesetzt. Für
Beispiel: $!{ENOENT} ist genau dann wahr, wenn der aktuelle Wert von $! ist „ENOENT“;
das heißt, wenn der letzte Fehler „Keine solche Datei oder kein solches Verzeichnis“ (oder dessen Moral) lautete
Äquivalent: Nicht alle Betriebssysteme geben genau diesen Fehler aus, und schon gar nicht alle
Sprachen). Der konkrete wahre Wert kann nicht garantiert werden, war aber in der Vergangenheit der Fall
war im Allgemeinen der numerische Wert von $!. Um zu überprüfen, ob ein bestimmter Schlüssel vorhanden ist
sinnvoll auf Ihrem System, verwenden Sie „exists $!{the_key}“; Für eine Liste der zulässigen Schlüssel verwenden Sie
"Schlüssel %!". Weitere Informationen finden Sie unter Errno und auch unter „$!“.

Diese Variable wurde in Perl 5.005 hinzugefügt.

$CHILD_ERROR
$? Der vom letzten Befehl „Pipe close, backtick („``“) erfolgreich zurückgegebene Status
Aufruf von „wait()“ oder „waitpid()“ oder vom Operator „system()“. Das ist gerecht
das 16-Bit-Statuswort, das vom traditionellen Unix-Systemaufruf „wait()“ zurückgegeben wird (oder
das andere ist so erfunden, dass es so aussieht). Somit ist der Ausgangswert des Unterprozesses
wirklich ("$? >> 8") und "$? & 127" gibt an, welches Signal, falls vorhanden, den Prozess abgebrochen hat
from, und „$? & 128“ meldet, ob ein Core-Dump vorhanden war.

Wenn die Variable „h_errno“ außerdem in C unterstützt wird, wird ihr Wert zurückgegeben
über $? wenn eine „gethost*()“-Funktion fehlschlägt.

Wenn Sie einen Signalhandler für „SIGCHLD“ installiert haben, ist der Wert von $? wird normalerweise
außerhalb dieses Handlers falsch sein.

Innerhalb einer „END“-Unterroutine $? enthält den Wert, der gegeben werden soll
"Ausfahrt()". Sie können $? ändern. in einer „END“-Unterroutine, um den Exit-Status zu ändern
Ihr Programm. Zum Beispiel:

ENDE {
$? = 1 wenn $? == 255; # sterben würde es 255 machen
}

Unter VMS führt das Pragma „use vmsish ‚status‘“ dazu, dass $? spiegeln den tatsächlichen VMS-Exit wider
status, anstelle der Standardemulation von POSIX status; siehe „$?“ in perlvms für
Details.

Mnemonik: ähnlich sh und ksh.

$EVAL_ERROR
$@ Die Perl-Syntaxfehlermeldung vom letzten „eval()“-Operator. Wenn $@ die Null ist
string, das letzte „eval()“ wurde korrekt analysiert und ausgeführt (obwohl die Operationen
Der von Ihnen aufgerufene Fehler ist möglicherweise auf normale Weise fehlgeschlagen.

Warnmeldungen werden in dieser Variable nicht gesammelt. Sie können jedoch eine einrichten
Routine zum Verarbeiten von Warnungen durch Festlegen von $SIG{__WARN__} wie in „%SIG“ beschrieben.

Mnemonik: Wo war der Syntaxfehler „at“?

Variablen bezogene zu Dolmetscher Zustand
Diese Variablen liefern Informationen über den aktuellen Interpreterstatus.

$KOMPILIEREN
$^C Der aktuelle Wert des Flags, das dem zugeordnet ist -c schalten. Hauptsächlich verwendbar mit
-MO=... damit Code sein Verhalten beim Kompilieren ändern kann, z. B. für
Beispiel: „AUTOLOAD“ zur Kompilierungszeit statt normalem, verzögertem Laden.
Das Setzen von „$^C = 1“ ähnelt dem Aufruf von „B::minus_c“.

Diese Variable wurde in Perl v5.6.0 hinzugefügt.

$DEBUGGING
$^D Der aktuelle Wert der Debugging-Flags. Kann gelesen oder gesetzt werden. Wie sein Befehl-
Zeilenäquivalent können Sie numerische oder symbolische Werte verwenden, z. B. „$^D = 10“ oder „$^D =
"st"".

Mnemonik: Wert von -D Schalter.

${^ENCODING}
VERALTET!!!

Die Objekt Referenz zum „Encode“-Objekt, das zum Konvertieren der Quelle verwendet wird
Code in Unicode umwandeln. Dank dieser Variablen muss Ihr Perl-Skript nicht sein
geschrieben in UTF-8. Der Standardwert ist „undef“.

Das Festlegen dieser Variablen auf einen anderen Wert als „undef“ ist aus folgenden Gründen veraltet:
Grundlegende Mängel in der Konzeption und Umsetzung. Es ist geplant, es zu entfernen
aus einer zukünftigen Perl-Version. Sein Zweck bestand darin, Ihre Nicht-ASCII-Perl-Skripte zu ermöglichen
muss nicht in UTF-8 geschrieben sein; Dies war nützlich, bevor die Redakteure daran arbeiteten
UTF-8-kodierter Text war üblich, aber das ist lange her. Es verursacht Probleme, wie z
da es den Betrieb anderer Module beeinträchtigt, die es nicht erwarten, verursacht
allgemeines Chaos. Seine Verwendung kann zu Segfaults führen.

Wenn Sie so etwas wie diese Funktionalität benötigen, sollten Sie das Codierungs-Pragma verwenden.
was ebenfalls veraltet ist, aber weniger unangenehme Nebenwirkungen hat.

Wenn Sie hierher kommen, weil Ihr Code dadurch beeinträchtigt wird
Wenn jemand diese Variable verwendet, können Sie dies normalerweise folgendermaßen umgehen:

lokal ${^ENCODING};

am Anfang der Funktionen, die kaputt gehen. Dies undefiniert die
Variable während der Ausführung der einschließenden Funktion.

Diese Variable wurde in Perl 5.8.2 hinzugefügt.

${^GLOBAL_PHASE}
Die aktuelle Phase des Perl-Interpreters.

Mögliche Werte sind:

BAUEN
Der „PerlInterpreter*“ wird über „perl_construct“ erstellt. Das
Der Wert dient hauptsächlich der Vollständigkeit und der Verwendung über das zugrunde liegende C
Variable „PL_phase“. Es ist nicht wirklich möglich, dass Perl-Code vorhanden ist
ausgeführt, es sei denn, die Konstruktion des Interpreters ist abgeschlossen.

START Dies ist die globale Kompilierungszeit. Dazu gehört im Grunde jedes „BEGIN“
Block, der direkt oder indirekt während der Kompilierungszeit des ausgeführt wird
Programm auf höchstem Niveau.

Diese Phase wird nicht „BEGIN“ genannt, um Verwechslungen mit „BEGIN“-Blöcken zu vermeiden,
da diese während der Kompilierungszeit einer Kompilierungseinheit ausgeführt werden, nicht
einfach das Top-Level-Programm. Eine neue, lokalisierte Kompilierungszeit, die beim Ausführen eingegeben wird.
Zeit, zum Beispiel durch Konstrukte wie „eval „use SomeModule““ sind nicht global
Interpreterphasen und werden daher nicht von „${^GLOBAL_PHASE}“ widergespiegelt.

CHECK Ausführung beliebiger „CHECK“-Blöcke.

INIT Ähnlich wie „CHECK“, aber für „INIT“-Blöcke, nicht für „CHECK“-Blöcke.

RUN Die Hauptlaufzeit, also die Ausführung von „PL_main_root“.

END Ausführung beliebiger „END“-Blöcke.

ZERSTÖREN
Globale Zerstörung.

Beachten Sie auch, dass es für UNITCHECK-Blöcke keinen Wert gibt. Das liegt daran, dass das so ist
wird für jede Kompilierungseinheit einzeln ausgeführt und ist daher nicht global
Dolmetscherphase.

Nicht jedes Programm muss jede der möglichen Phasen durchlaufen, sondern den Übergang
Der Übergang von einer Phase zur nächsten kann nur in der oben beschriebenen Reihenfolge erfolgen
Liste.

Ein Beispiel für alle Phasen, die Perl-Code sehen kann:

BEGIN { print "Kompilierungszeit: ${^GLOBAL_PHASE}\n" }

INIT { print "init-time: ${^GLOBAL_PHASE}\n" }

CHECK { print "Prüfzeit: ${^GLOBAL_PHASE}\n" }

{
Paket Print::Phase;

Unter neu {
my ($class, $time) = @_;
Rückgabe segnen \$time, $class;
}

unter ZERSTÖREN {
mein $self = shift;
print "$$self: ${^GLOBAL_PHASE}\n";
}
}

print "Laufzeit: ${^GLOBAL_PHASE}\n";

my $runtime = Print::Phase->new(
„Lexikalische Variablen werden vor END durch Müll gesammelt“
);

END { print "Endzeit: ${^GLOBAL_PHASE}\n" }

unser $destruct = Print::Phase->new(
„Paketvariablen werden nach ENDE durch Müll gesammelt“
);

Dies wird ausgedruckt

Kompilierzeit: START
Check-Zeit: CHECK
Initialisierungszeit: INIT
Laufzeit: RUN
lexikalische Variablen werden vor END: RUN durch Müll gesammelt
Endzeit: ENDE
Paketvariablen werden nach END: DESTRUCT durch Müll gesammelt

Diese Variable wurde in Perl 5.14.0 hinzugefügt.

$^H WARNUNG: Diese Variable ist ausschließlich für den internen Gebrauch bestimmt. Seine Verfügbarkeit,
Verhalten und Inhalte können ohne vorherige Ankündigung geändert werden.

Diese Variable enthält Hinweise zur Kompilierungszeit für den Perl-Interpreter. Am Ende von
Bei der Kompilierung eines BLOCKS wird der Wert dieser Variablen auf den Wert wiederhergestellt, wenn
Der Interpreter hat begonnen, den BLOCK zu kompilieren.

Wenn Perl beginnt, ein Blockkonstrukt zu analysieren, das einen lexikalischen Bereich bereitstellt (z. B.
Auswertungskörper, erforderliche Datei, Unterprogrammkörper, Schleifenkörper oder bedingter Block).
Der vorhandene Wert von $^H wird gespeichert, sein Wert bleibt jedoch unverändert. Wenn das
Sobald die Kompilierung des Blocks abgeschlossen ist, erhält er den gespeicherten Wert zurück. Zwischen den
Punkte, an denen sein Wert gespeichert und wiederhergestellt wird, Code, der innerhalb von BEGIN ausgeführt wird
Blocks steht es frei, den Wert von $^H zu ändern.

Dieses Verhalten stellt die Semantik des lexikalischen Scopings bereit und wird z. B. verwendet
Zum Beispiel das „use strict“-Pragma.

Der Inhalt sollte eine Ganzzahl sein; Verschiedene Teile davon werden für unterschiedliche Zwecke verwendet
pragmatische Flaggen. Hier ist ein Beispiel:

sub add_100 { $^H |= 0x100 }

subfoo {
BEGIN { add_100() }
bar->baz($boon);
}

Überlegen Sie, was während der Ausführung des BEGIN-Blocks passiert. An diesem Punkt die
Der BEGIN-Block wurde bereits kompiliert, aber der Hauptteil von „foo()“ wird noch erstellt
zusammengestellt. Der neue Wert von $^H wird daher nur sichtbar sein, während der Körper von
„foo()“ wird kompiliert.

Ersetzung des Blocks „BEGIN { add_100() }“ durch:

BEGIN { require strict; strict->import('vars') }

demonstriert, wie „use strict ‚vars‘“ implementiert wird. Hier ist eine bedingte Version
des gleichen lexikalischen Pragmas:

START {
erfordern streng; strict->import('vars') if $condition
}

Diese Variable wurde in Perl 5.003 hinzugefügt.

%^H Der „%^H“-Hash bietet die gleiche Scoping-Semantik wie $^H. Das macht es nützlich
zur Implementierung lexikalisch gültiger Pragmas. Siehe Perlpragma. Alle Einträge
werden beim Zugriff zur Laufzeit in Zeichenfolgen umgewandelt, sodass nur einfache Werte möglich sind
untergebracht. Das bedeutet zum Beispiel keine Zeiger auf Objekte.

Beim Einfügen von Elementen in „%^H“, um Konflikte mit anderen Benutzern von zu vermeiden
Beim Hash gibt es eine Konvention darüber, welche Schlüssel verwendet werden sollen. Ein Modul sollte verwenden
Nur Schlüssel, die mit dem Namen des Moduls (dem Namen seines Hauptpakets) und a beginnen
„/“-Zeichen. Beispielsweise sollte ein Modul „Foo::Bar“ Schlüssel wie verwenden
„Foo::Bar/baz“.

Diese Variable wurde in Perl v5.6.0 hinzugefügt.

${^ÖFFNEN}
Eine interne Variable, die von PerlIO verwendet wird. Eine Zeichenfolge in zwei Teilen, getrennt durch ein „\0“
Byte, der erste Teil beschreibt die Eingabeebenen, der zweite Teil beschreibt die
Ausgabeebenen.

Diese Variable wurde in Perl v5.8.0 hinzugefügt.

$PERLDB
$^P Die interne Variable zur Debugging-Unterstützung. Die Bedeutung der verschiedenen Bits ist
Änderungen vorbehalten, zeigen derzeit jedoch an:

0x01 Ein-/Ausstieg der Debug-Unterroutine.

0x02 Zeilenweises Debuggen. Bewirkt, dass für jeden die Unterroutine „DB::DB()“ aufgerufen wird
Anweisung ausgeführt. Bewirkt auch das Speichern von Quellcodezeilen (wie 0x400).

0x04 Optimierungen ausschalten.

0x08 Bewahren Sie mehr Daten für zukünftige interaktive Inspektionen auf.

0x10 Behalten Sie Informationen über Quellzeilen bei, in denen eine Unterroutine definiert ist.

0x20 Start mit Einzelschritt ein.

0x40 Verwenden Sie bei der Berichterstellung die Adresse des Unterprogramms anstelle des Namens.

0x80 Melde auch „goto &subroutine“.

0x100 Geben Sie informative „Datei“-Namen für Auswertungen an, basierend auf dem Ort, an dem sie sich befanden
zusammengestellt.

0x200 Geben Sie anonymen Unterroutinen anhand ihres Ortes aussagekräftige Namen
zusammengestellt wurden.

0x400 Quellcodezeilen in „@{“_<$filename“} speichern.

0x800 Schließen Sie beim Speichern der Quelle Auswertungen ein, die keine Unterroutinen generieren.

0x1000
Schließen Sie beim Speichern der Quelle auch die Quelle ein, die nicht kompiliert wurde.

Einige Bits sind möglicherweise nur zur Kompilierungszeit relevant, andere nur zur Laufzeit. Das ist ein
Neuer Mechanismus und die Details können sich ändern. Siehe auch perldebguts.

${^TAINT}
Gibt an, ob der Taint-Modus aktiviert oder deaktiviert ist. 1 für on (das Programm wurde ausgeführt mit -T), 0
für aus, -1, wenn nur Taint-Warnungen aktiviert sind (d. h. mit -t or -TU).

Diese Variable ist schreibgeschützt.

Diese Variable wurde in Perl v5.8.0 hinzugefügt.

${^UNICODE}
Spiegelt bestimmte Unicode-Einstellungen von Perl wider. Siehe Perlrun-Dokumentation für „-C“
Weitere Informationen zu den möglichen Werten finden Sie unter Schalter.

Diese Variable wird beim Perl-Start festgelegt und ist danach schreibgeschützt.

Diese Variable wurde in Perl v5.8.2 hinzugefügt.

${^UTF8CACHE}
Diese Variable steuert den Status des internen UTF-8-Offset-Caching-Codes. 1 für
on (Standard), 0 für off, -1 zum Debuggen des Caching-Codes durch Überprüfung aller Codes
Ergebnisse mit linearen Scans vergleichen und bei Abweichungen in Panik geraten.

Diese Variable wurde in Perl v5.8.9 hinzugefügt. Es kann geändert oder entfernt werden
ohne vorherige Ankündigung, wird jedoch derzeit verwendet, um eine Neuberechnung der Grenzen von zu vermeiden
Mehrbyte-UTF-8-codierte Zeichen.

${^UTF8LOCALE}
Diese Variable gibt an, ob Perl beim Start ein UTF-8-Gebietsschema erkannt hat.
Diese Informationen werden von Perl verwendet, wenn es sich im Modus „adjust-utf8ness-to-locale“ befindet (as
bei Ausführung mit dem Befehlszeilenschalter „-CL“); Weitere Informationen hierzu finden Sie unter Perlrun.

Diese Variable wurde in Perl v5.8.8 hinzugefügt.

Veraltete und entfernt Variablen
Das Verwerfen einer Variable kündigt die Absicht der Perl-Betreuer an, diese irgendwann zu entfernen
die Variable aus der Sprache. Möglicherweise ist es trotz seines Status noch verfügbar. Verwendung einer
Eine veraltete Variable löst eine Warnung aus.

Sobald eine Variable entfernt wird, löst ihre Verwendung einen Fehler aus, der Sie darüber informiert, dass die Variable entfernt wurde
nicht unterstützt.

Einzelheiten zu Fehlermeldungen finden Sie unter perldiag.

$# $# war eine Variable, die zum Formatieren gedruckter Zahlen verwendet werden konnte. Nach einer
Verfallszyklus, seine Magie wurde in Perl v5.10.0 entfernt und seine Verwendung wird jetzt ausgelöst
eine Warnung: „$# wird nicht mehr unterstützt“.

Dies ist nicht das Siegel, das Sie vor einem Array-Namen verwenden, um den letzten Index zu erhalten.
wie $#array. Auf diese Weise erhalten Sie immer noch den letzten Index eines Arrays in Perl. Der
zwei haben nichts miteinander zu tun.

In Perl 5 veraltet.

In Perl v5.10.0 entfernt.

$* $* war eine Variable, die Sie verwenden konnten, um den mehrzeiligen Abgleich zu aktivieren. Nach einer
Verfallszyklus, seine Magie wurde in Perl v5.10.0 entfernt. Wenn Sie es jetzt verwenden, wird a ausgelöst
Warnung: „$* wird nicht mehr unterstützt“. Sie sollten den regulären Ausdruck „/s“ und „/m“ verwenden
Modifikatoren stattdessen.

In Perl 5 veraltet.

In Perl v5.10.0 entfernt.

$[ Diese Variable speichert den Index des ersten Elements in einem Array und des ersten
Zeichen in einer Teilzeichenfolge. Der Standardwert ist 0, aber Sie könnten ihn theoretisch auch auf festlegen
1, damit sich Perl ähnlicher verhält awk (oder Fortran) beim Abonnieren und wann
auswerten Index() und substr () Funktionen.

Ab Version 5 von Perl wird die Zuweisung an $[ als Compiler-Direktive behandelt und
kann das Verhalten anderer Dateien nicht beeinflussen. (Daher können Sie nur zuweisen
(Kompilierungszeitkonstanten hinzufügen.) Von der Verwendung wird dringend abgeraten.

Vor Perl v5.10.0 konnte die Zuweisung zu $[ aus äußeren lexikalischen Bereichen in gesehen werden
die gleiche Datei, im Gegensatz zu anderen Direktiven zur Kompilierungszeit (z. B. strict). Benutzen
lokal() darauf würde seinen Wert streng an einen lexikalischen Block binden. Jetzt ist es immer so
lexikalisch begrenzt.

Ab Perl v5.16.0 wird es durch das Arybase-Modul implementiert. Weitere Informationen finden Sie unter arybase
Details zu seinem Verhalten.

Unter „v5.16 verwenden“ oder „keine Funktion „array_base““ hat $[ keine Auswirkung mehr und
enthält immer 0. Die Zuweisung von 0 ist zulässig, jeder andere Wert jedoch
einen Fehler erzeugen.

Mnemonik: [ beginnt mit Indizes.

In Perl v5.12.0 veraltet.

Verwenden Sie Perlvar online über die Dienste von onworks.net


Kostenlose Server & Workstations

Laden Sie Windows- und Linux-Apps herunter

Linux-Befehle

  • 1
    4g8
    4g8
    4g8 - Paketerfassung und -abfangen
    für Switched Networks ...
    Führen Sie 4g8 aus
  • 2
    4s-adminJ
    4s-adminJ
    4s-admin – 4store-Clusterverwaltung
    Werkzeug ...
    Führen Sie 4s-adminJ aus
  • 3
    creduce
    creduce
    creduce – C- und C++-Programmreduzierer
    BESCHREIBUNG: creduce 2.5.0 (unbekannt) --
    ein C- und C++-Programmreduzierer C-Reduce
    erfordert einen „Interessanztest“ und
    eins oder...
    Führen Sie Creduce aus
  • 4
    gruselig
    gruselig
    CREEPY - Eine Geolokalisierungsinformation
    Aggregator BESCHREIBUNG: gruselig ist ein
    Anwendung, mit der Sie sammeln können
    Geolokalisierungsbezogene Informationen über
    Benutzer aus ...
    Gruselig laufen
  • 5
    g.gisenvgrass
    g.gisenvgrass
    g.gisenv - Gibt aus und modifiziert die
    aktuelle GRASS-Variableneinstellungen des Benutzers.
    Druckt alle definierten GRASS Variablen falls nein
    Möglichkeit gegeben ist. SCHLÜSSELWÖRTER: allgemein,
    einstellen...
    Führen Sie g.gisenvgrass aus
  • 6
    g. guigrass
    g. guigrass
    g.gui - Startet einen grafischen Benutzer von GRASS
    Interface (GUI) Sitzung. Optional
    aktualisiert die Standardeinstellungen der Benutzeroberfläche.
    SCHLÜSSELWÖRTER: Allgemein, GUI, Benutzeroberfläche ...
    Führen Sie g.guigrass aus
  • Mehr »

Ad