如何使用-M标志从命令行使用perl模块的相对路径加载perl模块?

如何使用-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

我有以下代码: 下午六时

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 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,看起来会好一点;使用警告
程序包
指令之后。感谢所有建议,请记住!