У меня есть код примерно так: (! Конечно, это упрощенная версия)Не удается найти метод объекта с помощью пакета, даже если я не использую методы
sub define_pattern { push @Internal::patterns, $_[0]; }
package Internal {
our @patterns =();
sub func { define_pattern { pattern => '(.*)\.c$' }; }
}
Internal::func;
Теперь, когда я бегу он, она выводит:
Can't locate object method "define_pattern" via package "pattern" (perhaps you forgot to load "pattern"?) at x.pl line 6.
Я уже Googled эту ошибку и посмотрел на несколько похож SO вопросов, но ни один из них не кажется, есть решение этой проблемы. Почему Perl думает, что define_pattern
- это метод, а pattern
- это пакет? Я думал, что эта ошибка произошла только при использовании ->
, например pattern->define_method
.
Что означает ваш 'define_pattern'? Вы вызываете его с помощью curlies (и не квалифицируете его как btw). – zdim
@zdim Это обычно немного дольше, но по сути делает то, что он показывает, за исключением того, что полная версия выполняет некоторую проверку и изменение входных параметров. – refi64