Неоднозначный вызов разрешается как CORE :: join (), квалифицируется как таковой или используется & at - PullRequest
0 голосов
/ 18 сентября 2018

У меня ошибка:

Ambiguous call resolved as CORE::join(), qualify as such or use & at

Когда я исправляю ошибку как:

$args =  CORE::join( ', ', @$args );

все работает нормально.

Но когда я исправляю это как:

$args =  &join( ', ', @$args );

Как следует из сообщения об ошибке, я получил другую ошибку:

Can't locate object method "_make_instance" via package ", " (perhaps you forgot to load ", "?) at

почему не работает второе исправление?

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Вы получаете сообщение об ошибке, потому что у вас есть подпункт с именем join, поэтому вам необходимо устранить неоднозначность.Чтобы сделать это вызов встроенным, добавьте CORE::.Чтобы вызвать его, добавьте &.

Ошибка в том, что вы вызываете sub, и на самом деле это метод, который ожидает объект или класс в качестве первого параметра , что неявно происходит при использовании синтаксиса вызова метода.

0 голосов
/ 18 сентября 2018

Вы получаете это предупреждение, потому что вы определили подпрограмму с именем join.Теперь Perl не уверен, должен ли join( ', ', @$args ) вызывать встроенную функцию или вашу подпрограмму.

CORE::join однозначно вызывает встроенную join.

&join(...) однозначно вызывает вашу подпрограмму (и переопределяет любой ее прототип).Что касается того, почему ваша подпрограмма выдает странные ошибки о пакете с именами , и _make_instance, мы не сможем ответить, если вы не покажете нам код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...