我对 PPI 模块有一些问题:
假设我有 Foo.pm:
package Foo;
sub foo0 { 1; }
sub foo1 { 1; }
sub foo2 { 1; }
sub foo3 { 1; }
1;
我想使用 PPI 来获取所有潜艇:
#!/usr/bin/env perl
use PPI;
my $filename = shift;
my $Document = PPI::Document->new($filename);
my $subs = $Document->find('PPI::Statement::Sub');
warn $#$subs;
结果我得到了'3',这是正确的。
但是当我在 Foo.pm 中的一个潜艇被称为“sub vN ...”时,其中 N 是一个数字,fe:
sub v1foo {}
或者
sub v3bar {}
或者干脆
sub v2 {}
PPI::Document find 似乎破坏了解析并仅返回已找到的子项。因此,如果我修改 Foo:
package Foo;
sub foo0 { 1; }
sub foo1 { 1; }
sub v2xx { 1; }
sub foo3 { 1; }
1;
我的测试结果将是“1”(发现潜艇是 foo0 和 foo1)
是否以某种方式禁止声明像 v[0..9] 这样的子例程名称?
问候。