Perl -M将找不到模块的硬编码路径

isa*_*bob 1 perl csh

背景

在chsell脚本中,我从perl模块调用一个子例程,并将其结果按以下方式保存到变量中:

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

尽管我明确指定了模块,但我的脚本仍抛出此错误:

-M选项需要的模块名称

如何使用perl的-M选项调用硬编码模块?

Gri*_*nnz 6

您不能这样做,因为该-M选项已转换为仅包含模块名称而不包含路径的use语句。但是,您可以使用该-I选项将路径添加为第一个模块搜索路径。通过像-> 一样翻译模块,可以相对于每个搜索路径搜索模块。Foo::BarFoo/Bar.pm

perl -I/home/hard/coded/path -Mlib=theFunction
Run Code Online (Sandbox Code Playgroud)

注意,绝对不要调用模块或包lib,因为这是重要的核心模块(实际上,这-I就是这里使用的模块)。