Ответ @Scimon, безусловно, правильный, но он не затрагивает ОП.С другой стороны, два комментария @ugexe и @raiph точны, поэтому я постараюсь обобщить их здесь и объяснить, что происходит.
Сама ошибка
Это ошибка:
Сообщение об ошибке:
=== К сожалению! === Нет такого метода 'open-channel 'для инвоканта типа' Any '
Указывает, что инвокант ($XXX::YYY::rabbitConnection
) имеет тип Any
, который обычно назначается переменным, когда они не имеютопределенное значение;то есть, в основном, $XXX::YYY::rabbitConnection
не определено.Конечно, это не так, поскольку XXX::YYY
не входит в число импортируемых модулей, как указано @ ugexe.
Дополнительная проблема, указанная в OP
Этот модуль был исключен из импортированного списка, поскольку, как обозначено OP
Я определенно кодирую его неправильно, потому что, если я пытаюсь добавить использование XXX :: YYY ;, я получаю ошибку загрузки модуля Circular, обнаруженную
Но конечно.поскольку use XXX::YYY::Route1;
, который является файлом 2, включен в файл 1.
Окончательное решение заключается в реорганизации файлов
Эта круговая зависимость, вероятно, указывает на тот факт, что они должны быть в одном и том жефайл, или же общий код должен быть вынесен в третий файл, который в конечном итоге будет включен обоими.Так что у вас должно быть что-то вроде модульного модуля XXX :: YYY :: Common;используйте Net :: AMQP;
our $rabbitConnection is export = Net::AMQP.new;
await $rabbitConnection.connect;
, а затем
use XXX::YYY::Common;
в обоих модулях.