Есть два элемента - сначала находится модуль. Perl имеет «библиотечный» путь, который вы можете найти по:
print join ("\n", @INC);
Это места, где это выглядит. Он также проверит текущий рабочий каталог, но это немного сложнее, используя относительный путь времени выполнения - для этого вам необходимо использовать модуль FindBin
.
Второй элемент - импорт и экспорт подпрограммы. По умолчанию, если вы use A;
вы не будет импортировать все в свое местное пространство имен, потому что ... вы не хотите случайно переопределять одну из своих внутренних функций. Таким образом, безумие.
Так что вы либо:
use A qw (somefunction);
Какой будет «тянуть» эту функцию и определить его в локальном пространстве имен. Точное поведение этих вещей можно изменить с помощью Exporter
и установить @EXPORT
и @EXPORT_OK
.
Или обратитесь к нему по «пути пакета».
A::somefunction(@arguments);
Это также работает для переменных, хотя вы должны рамки их our
, а не my
.
Я думаю, вам нужно сказать «использовать A» в начале файла B.pm, а затем вызвать sub с A :: your_sub_name(); –
Опубликуйте полный пример, демонстрирующий проблему. –
Трудно сказать, что вы сделали неправильно, так как вы не показали нам, но это, возможно, дубликат [Почему функции из пакета A не импортируются в пакет B, когда они рекурсивно называют друг друга?] (Http: // stackoverflow .com/q/11521584/589924) – ikegami