在chsell脚本中,我从perl模块调用一个子例程,并将其结果保存到following manner中的变量中:
set result =`perl -M/some/hard/coded/path/lib.pm=theFunction -e 'theFunction( $A_VARIABLE_ARGUMENT )'`
尽管我明确指定了模块,但我的脚本抛出了此错误:
带有-M选项的模块名称必需
如何使用perl的-M选项调用硬编码模块?
答案 0 :(得分:6)
您不能这样做,因为-M
选项被转换为use语句,该语句仅使用模块名称,而不使用路径。但是,您可以使用-I
选项将路径添加为第一个模块搜索路径。通过像Foo::Bar
-> Foo/Bar.pm
那样翻译它们来相对于每个search path搜索模块。
perl -I/home/hard/coded/path -Mlib=theFunction
请注意,绝对不要调用模块或软件包lib
,因为这是一个重要的核心模块(实际上,-I
就是这里使用的模块)。