Ошибка PPI::Document или какое-то специальное имя подпрограммы?

у меня проблемы с модулем 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 — число, например:

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]?

Приветствую.

5
задан Robert 30 January 2012 в 11:23
поделиться