我想知道是否有用於%+
是運營商的名字,所以不是像代碼:是否有特殊變量%+的名稱?
/(?<CaptureName>\w+)/;
...
my $whatever=$+{CaptureName};
我可以用一些更有可讀性:
use English;
/(?<CaptureName>\w+)/;
...
my $whatever=$?????{CaptureName};
我想知道是否有用於%+
是運營商的名字,所以不是像代碼:是否有特殊變量%+的名稱?
/(?<CaptureName>\w+)/;
...
my $whatever=$+{CaptureName};
我可以用一些更有可讀性:
use English;
/(?<CaptureName>\w+)/;
...
my $whatever=$?????{CaptureName};
使用English模塊,您可以參考一下吧爲%LAST_PAREN_MATCH
:
use English;
/(?<CaptureName>\w+)/;
...
my $whatever = $LAST_PAREN_MATCH{CaptureName};
謝謝澄清! –
%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.
你可以參考http://perldoc.perl.org/perlvar.html OM他的未來找出符號名。
在你的情況sylbe被稱爲LAST_PAREN_MATCH
%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.
例如,$ + {FOO}相當於$ 1以下
唯一要注意的我會做後,該文檔包括這樣的:
This variable was added in Perl v5.10.0.
因此,如果您使用的是較舊的解釋,這可能會導致問題。
備註正如Keith指出的那樣,他在下面評論,你也可以使用perldoc -v '$+'
。如果符號在您安裝的Perl版本上可用,這樣做的好處是隻能工作。
或運行'perldoc perlvar'或'perldoc -v'$ +''。運行'perldoc'命令的優點是,它會向您顯示您系統中Perl版本的文檔,而不是恰好在網頁上記錄的版本。 –
@KeithThompson,是的基思,這是一個很好的觀點。感謝您指出它。 – chollida
如果您在舊版Perl中使用它,那麼缺少'%+'內置變量是您最擔心的問題。 **在5.10之前的Perl中,命名捕獲*不存在*(儘管事實上,在Perl 5.8,5.6中也存在魔術散列「%+」,也可能存在舊版本。如果有一個魔術變量'$ x',其中x是一個標點符號,那麼'@ x'和'%x' *必須*是一個未使用的魔術變量,它是一個未使用的魔術變量。存在,即使它們沒有任何用處。'$ +'存在,並且做了一些有用的操作,因此存在'%+'。) – tobyink
感謝大家提供的答案與寶貴的補充接受答案。我給你們每個人+1。 –