我需要运行perl脚本来收集将在不同的unix服务器上部署和执行的系统信息。
现在我正在编写并测试它,我收到了这个错误。
无法在@INC中找到XML / DOM.pm(@INC包含:/ usr / local / lib64 / perl5 / usr / local / share / perl5 / usr / lib64 / perl5 / vendor_perl / usr / share / perl5 / vendor_perl / usr / lib64 / perl5 / usr / share / perl5。)at test.pl第7行.BEGIN失败 - 编译在test.pl第7行中止。
所以我只是使用XML :: DOM,它应该是Perl的一部分,但它不适用于这个特殊服务器上的这个版本,即5.10.1。
无论如何,有没有一种方法可以创建和设计我的脚本并将模块打包到其中,同时保留.pl扩展名,这是此脚本的要求?
答案 0 :(得分:1)
如果模块不需要编译库,则可以通过将模块中的文本复制到.pl文件中来包含它们。这是一个可怕的黑客,但它应该工作。
Perl模块应该包含一个package语句,为它们提供名称。当您进入主程序部分时,您需要自己的package main;
声明。
答案 1 :(得分:1)
您可以将模块放在任何目录中,然后通过the lib
pragma包含此目录以包含在模块搜索中。请注意,模块Foo::Bar
必须位于MY-ROOT/Foo/Bar.pm
文件中,并且可能不在MY-ROOT/Bar.pm
中,其中MY-ROOT
是您的模块目录。
use lib 'MY-ROOT';
use Foo::Bar;
但是,这仅适用于纯Perl模块,并且不支持XS。
答案 2 :(得分:1)