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

时间:2019-05-15 14:12:23

标签: perl csh

背景

在chsell脚本中,我从perl模块调用一个子例程,并将其结果保存到following manner中的变量中:

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

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

  

带有-M选项的模块名称必需

问题

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

1 个答案:

答案 0 :(得分:6)

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

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

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