2014-02-12 6 views

Antwort

7

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}; 
+0

Danke für die Klärung! –

6

perldoc -v %+

%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. 
6

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.

+3

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. –

+0

@KeithThompson, ja Keith, das ist ein guter Punkt. Danke für den Hinweis. – chollida

+1

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

Verwandte Themen