Имена переменных Moose не могут содержать :: at - PullRequest
0 голосов
/ 10 марта 2019

Итак, я столкнулся с этой странной ошибкой.

Имена переменных могут не содержать :: at ... / perl5 / lib / perl5 / x86_64-cygwin-threads-multi / Class / MOP / Package.pm

Код, который вызывает его:

override 'emitEvent::ENOTE::Final' => sub {
my ($self, $e) = @_;
my ($rval);

$rval = super();


return($rval);
};

Я нашел эту ссылку относительно ошибки: http://codeverge.com/perl.perl5.porters/a-very-old-bug-in-safe.pm/2018166

Это связано?

Если я уберу символ «::», он исчезнет, ​​но на самом деле мешает тому, как я называю вещи, поэтому, если есть обходной путь, я был бы признателен.

-E

1 Ответ

5 голосов
/ 10 марта 2019

override Первый аргумент должен быть (неквалифицированным) именем метода унаследованного метода.

emitEvent::ENOTE::Final не является допустимым именем метода Perl, потому что Perl воспримет это как метод с именем Final в пакете emitEvent::ENOTE. Если вы обманули что-то при создании метода с таким названием, вы должны это исправить.

...