Ich frage mich, ob ein Name des Bedieners für %+
, es war wie:Gibt es einen Namen für die Sondervariable% +? so dass anstelle von Code
use English;
/(?<CaptureName>\w+)/;
...
my $whatever=$?????{CaptureName};
Ich frage mich, ob ein Name des Bedieners für %+
, es war wie:Gibt es einen Namen für die Sondervariable% +? so dass anstelle von Code
use English;
/(?<CaptureName>\w+)/;
...
my $whatever=$?????{CaptureName};
Mit dem English Modul Sie darauf verweisen können:
/(?<CaptureName>\w+)/;
...
my $whatever=$+{CaptureName};
ich etwas besser lesbar verwenden könnte als %LAST_PAREN_MATCH
:
use English;
/(?<CaptureName>\w+)/;
...
my $whatever = $LAST_PAREN_MATCH{CaptureName};
Danke für die Klärung! –
%LAST_PAREN_MATCH %+ Similar to "@+", the "%+" hash allows access to the named capture buffers, should they exist, in the last successful match in the currently active dynamic scope.
Sie können die Symbolnamen, um herauszufinden, zu http://perldoc.perl.org/perlvar.html om er Zukunft beziehen.
In Ihrem Fall die sylbe LAST_PAREN_MATCH genannt wird
%LAST_PAREN_MATCH
%+
Similar to @+ , the %+ hash allows access to the named capture buffers, should they exist, in the last successful match in the currently active dynamic scope.
Zum Beispiel + $ {foo} entspricht $ 1 nach dem folgenden
Die einzige Anmerkung I machen würde, dass die Dokumente enthält dies:
This variable was added in Perl v5.10.0.
Wenn Sie also einen älteren Interpreter verwenden, könnte dies zu Problemen führen.
HINWEIS Wie Keith im Kommentar unten erwähnt, können Sie auch perldoc -v '$+'
verwenden. Dies hat nur dann Vorteile, wenn das Symbol auf Ihrer installierten Perl-Version verfügbar ist.
Oder führen Sie 'perldoc perlvar' oder' perldoc -v '$ +' 'aus. Das Ausführen des 'perldoc'-Befehls hat den Vorteil, dass es Ihnen die Dokumentation für die Perl-Version anzeigt, die Sie auf Ihrem System haben, und nicht die, die auf der Webseite dokumentiert ist. –
@KeithThompson, ja Keith, das ist ein guter Punkt. Danke für den Hinweis. – chollida
Wenn Sie es in einer älteren Version von Perl verwenden, ist das Fehlen der integrierten Variable% + die letzte Sorge. ** Named Captures * existieren in Perl nicht vor 5.10! ** (obwohl tatsächlich der magische Hash '% +' in Perl 5.8, 5.6 und wahrscheinlich auch älteren Versionen existiert. Er tut es einfach nicht alles tun - es ist eine unbenutzte magische Variable Dies ist ein Artefakt, wie der Perl-Parser funktioniert Wenn es eine magische Variable '$ x' gibt, wobei x ein Interpunktionszeichen ist, dann müssen' @ x' und '% x' * existieren, auch wenn sie nichts Nützliches machen. '$ +' existiert, und tut etwas Nützliches, deshalb existiert '% +'.) – tobyink
Dank an alle, die Antworten mit wertvollen Ergänzungen zu der angenommenen Antwort gegeben haben. Ich habe jedem von euch +1 gegeben. –