Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将Perl模块包含在与程序相关的路径中?_Perl_Path_Packages - Fatal编程技术网

如何将Perl模块包含在与程序相关的路径中?

如何将Perl模块包含在与程序相关的路径中?,perl,path,packages,Perl,Path,Packages,我有一个使用已安装包的Perl脚本。一个是Perl包,另一个是PerlXS包 现在我想调用这个脚本,但不是使用已安装的包,而是使用路径中具有相同名称的包 我使用了perl-I/home/../lib script.pl,但它不起作用 我该怎么做?您可以使用pragma将目录前置到perl用于查找模块的路径 因此,如果在默认目录中安装了名为Foo的模块,并且在/home/cowens/perl5中安装了不同的版本,您可以说 use lib "/home/cowens/perl5"; use Foo

我有一个使用已安装包的Perl脚本。一个是Perl包,另一个是PerlXS包

现在我想调用这个脚本,但不是使用已安装的包,而是使用路径中具有相同名称的包

我使用了
perl-I/home/../lib script.pl
,但它不起作用

我该怎么做?

您可以使用pragma将目录前置到
perl
用于查找模块的路径

因此,如果在默认目录中安装了名为
Foo
的模块,并且在
/home/cowens/perl5
中安装了不同的版本,您可以说

use lib "/home/cowens/perl5";
use Foo;

perl
将在
/home/cowens/perl5
中找到该版本。有关影响模块加载位置的各种方式,请查看以下帖子:


您能给我们一个递归的目录列表,其中存储了您想要使用的模块吗?一个
ls-R
可以帮助我们确定您是否有正确的路径

当您使用
-I
开关时,必须确保获得正确的路径。如果您使用模块:

 use Some::Module;
Perl实际上寻找:

 $lib/Some/Module.pm
$lib
@INC
中的目录之一。不过,另一种说法是,如果特定目录不在
@INC
中,Perl就不会在其中查找。这意味着Perl不会自动为您查找子目录

如果您的模块不在该位置,Perl就不会在
$lib
中四处搜索它。您的XS模块可能不是这样存储的。路径中可能有Perl版本和archtype,因此您可以在以下位置找到它:

 $lib/5.10.1/darwin-2level/Some/Module.pm
如果您使用的是
-I
,则需要自己添加这些路径

但是,您可以在命令行上加载模块。使用
lib
更容易,它为您添加了额外的目录:

 perl -Mlib=/path/to/lib ...

不幸的是,这不是我的脚本,所以我不能修改它。我可以用选项来运行它。看,伙计,不工作是一个强有力的声明。它整天坐在沙发上吗?它在向你做鬼脸吗?它需要更多的钱吗?是和你女朋友睡觉吗?请具体点!:-)所以问题是,您试图加载自己的包,但却加载了默认包?我已经尝试了列表中的所有方法/但没有帮助/我仍然无法使用自己的模块(您需要为我们指定确切的软件包名称以提供更详细的帮助-提供
使用xxx
行。因此,请指定模块代码的确切目录结构-I和-mlibt的优点和缺点-好处和风险取决于您正在做什么。一个只添加您所说的内容,另一个为@INC添加arch和version dirs。whith呃,好坏取决于你想要什么。