Perl -M не найдет жестко заданный путь к модулю - PullRequest
1 голос
/ 15 мая 2019

Фон

Внутри скрипта chsell я вызываю подпрограмму из модуля perl и сохраняю ее результат в переменной следующим образом :

set result =`perl -M/some/hard/coded/path/lib.pm=theFunction -e 'theFunction( $A_VARIABLE_ARGUMENT )'`

Несмотря на то, что я явно указываю модуль, мой скрипт выдает эту ошибку:

Требуется имя модуля с опцией -M

Вопрос

Как вызвать жестко запрограммированный модуль с параметром -M perl?

1 Ответ

6 голосов
/ 15 мая 2019

Вы не можете, так как опция -M переведена в оператор use , который принимает только имена модулей, а не пути.Однако вы можете добавить путь в качестве первого пути поиска модуля, используя опцию -I.Модули ищутся относительно каждого пути поиска , переводя их как Foo::Bar -> Foo/Bar.pm.

perl -I/home/hard/coded/path -Mlib=theFunction

Как примечание, вы определенно не должны вызывать свой модуль или пакет lib, потому что это важный базовый модуль (на самом деле это то, что -I использует здесь).

...