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 の私のサブの 1 つが '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] のようなサブルーチン名を宣言することはどういうわけか禁止されていますか?
ご挨拶。