如何使用-M标志从命令行使用perl模块的相对路径加载perl模块?
我有以下代码: 下午六时 demo.pm文件位于其他位置,希望使用相对路径获取模块并运行它 使用以下来自linux的命令会引发错误: perl-M/sub1/sub2/demo.pm-e'demo::doit('arg1')' 错误:如何使用-M标志从命令行使用perl模块的相对路径加载perl模块?,perl,unix,Perl,Unix,我有以下代码: 下午六时 demo.pm文件位于其他位置,希望使用相对路径获取模块并运行它 使用以下来自linux的命令会引发错误: perl-M/sub1/sub2/demo.pm-e'demo::doit('arg1')' 错误: 在-e第0行“use/sub1/”附近出现语法错误 由于编译错误,-e的执行被中止。如果您有绝对路径,并且希望所有脚本都能找到模块: export PERL5LIB="${PERL5LIB:+"$PERL5LIB:"}/path/to/lib" # In you
在-e第0行“use/sub1/”附近出现语法错误
由于编译错误,-e的执行被中止。如果您有绝对路径,并且希望所有脚本都能找到模块:
export PERL5LIB="${PERL5LIB:+"$PERL5LIB:"}/path/to/lib" # In your login script.
script
PERL5LIB="${PERL5LIB:+"$PERL5LIB:"}/path/to/lib" script
如果您有一个绝对路径,并且希望执行一次脚本来查找模块:
export PERL5LIB="${PERL5LIB:+"$PERL5LIB:"}/path/to/lib" # In your login script.
script
PERL5LIB="${PERL5LIB:+"$PERL5LIB:"}/path/to/lib" script
如果您有一个模块安装在相对于脚本的目录中:
use FindBin qw( $RealBin );
use lib "$RealBin/../lib";
在您的具体情况下:
perl -Mlib=/sub1/sub2 -Mdemo -e'demo::doit("arg1")'
避免使用
-I
。它不包括相关的arch dir,如PERL5LIB
和lib.pm do,因此带有arch特定组件的模块将无法加载。如果您有绝对路径,并且希望所有脚本都能找到该模块:
export PERL5LIB="${PERL5LIB:+"$PERL5LIB:"}/path/to/lib" # In your login script.
script
PERL5LIB="${PERL5LIB:+"$PERL5LIB:"}/path/to/lib" script
如果您有一个绝对路径,并且希望执行一次脚本来查找模块:
export PERL5LIB="${PERL5LIB:+"$PERL5LIB:"}/path/to/lib" # In your login script.
script
PERL5LIB="${PERL5LIB:+"$PERL5LIB:"}/path/to/lib" script
如果您有一个模块安装在相对于脚本的目录中:
use FindBin qw( $RealBin );
use lib "$RealBin/../lib";
在您的具体情况下:
perl -Mlib=/sub1/sub2 -Mdemo -e'demo::doit("arg1")'
避免使用
-I
。它不包括相关的arch dir,如PERL5LIB
和lib.pm do,因此带有arch特定组件的模块将无法加载。尝试使用-I/path/to/directory/containing/libTip:#代码>在模块中没有意义。提示:模块必须以真值结束。这通常通过添加1来实现提示:如果你把使用strict,看起来会好一点;使用警告代码>在程序包
指令之后。感谢所有建议,请记住!尝试使用-I/path/to/directory/containing/libTip:#代码>在模块中没有意义。提示:模块必须以真值结束。这通常通过添加1来实现提示:如果你把使用strict,看起来会好一点;使用警告代码>在程序包
指令之后。感谢所有建议,请记住!