Perl打包问题

时间:2010-07-12 10:16:54

标签: windows eclipse perl activeperl

我是Perl的新手。

我下载了一个perl应用程序,它在源文件中有这样一行:

 use PWING::Utils::Utils;

它会导入一个文件。

我下载了Eclipse的插件[Perl-Eclipse集成]。 当我尝试将该文件作为perl应用程序启动时,它表示无法找到导入的资源。

现在问题是,perl包结构是什么样的?

该行意味着必须有这样的目录结构:

    PWING - 
          Utils - 
                 Utils.pm ?

我看到我下载的应用程序不包含这样的结构,那么如何才能开始?

2 个答案:

答案 0 :(得分:3)

perlmod文档说明

  

所有Perl模块文件的扩展名为.pmuse运算符假设为此,因此您无需在引号中拼出"Module.pm"。这也有助于区分新模块与旧.pl.ph文件。模块名称也是大写的,除非它们像pragma一样运行; pragma实际上是编译器指令,有时被称为“实用模块”(如果你是古典主义者,甚至称为“pragmata”)。

     

这两个陈述:

require SomeModule;
require "SomeModule.pm";
     

以两种方式彼此不同。在第一种情况下,模块名称中的任何双冒号(例如Some::Module)都会转换为系统的目录分隔符,通常为“/".

     

...

     

Perl包可以嵌套在其他包名中,因此我们可以包含::的包名。但是如果我们直接将该包名称用作文件名,则会在某些系统上使用笨拙或不可能的文件名。因此,如果模块的名称是Text::Soundex,那么它的定义实际上可以在库文件 Text / Soundex.pm 中找到。

特殊@INC数组包含要搜索模块的目录:

  

@INC

     

数组@INC包含do EXPRrequireuse结构查找其库文件的地方列表。它最初由任何-I命令行开关的参数组成,后跟默认的Perl库,可能是/usr/local/lib/perl,后跟".",表示当前目录。如果"."-T启用了污点检查,则不会追加-t。)如果需要在运行时修改此值,则应使用use lib pragma也可以正确加载与机器相关的库:

use lib '/mypath/libdir/';
use SomeMod;

答案 1 :(得分:0)

在Unix系统上,该文件可以在

形式的目录中找到
 lib/PWING/Utils/Utils.pm

但问题是检测顶级目录'lib'的位置。

如果您的系统上安装了该模块,它将被放置在Perl可以找到它的位置。