我是Perl的新手。
我下载了一个perl应用程序,它在源文件中有这样一行:
use PWING::Utils::Utils;
它会导入一个文件。
我下载了Eclipse的插件[Perl-Eclipse集成]。 当我尝试将该文件作为perl应用程序启动时,它表示无法找到导入的资源。
现在问题是,perl包结构是什么样的?
该行意味着必须有这样的目录结构:
PWING -
Utils -
Utils.pm ?
我看到我下载的应用程序不包含这样的结构,那么如何才能开始?
答案 0 :(得分:3)
perlmod文档说明
所有Perl模块文件的扩展名为
.pm
。use
运算符假设为此,因此您无需在引号中拼出"Module.pm"
。这也有助于区分新模块与旧.pl
和.ph
文件。模块名称也是大写的,除非它们像pragma一样运行; pragma实际上是编译器指令,有时被称为“实用模块”(如果你是古典主义者,甚至称为“pragmata”)。这两个陈述:
require SomeModule; require "SomeModule.pm";
以两种方式彼此不同。在第一种情况下,模块名称中的任何双冒号(例如
Some::Module
)都会转换为系统的目录分隔符,通常为“/"....
Perl包可以嵌套在其他包名中,因此我们可以包含
::
的包名。但是如果我们直接将该包名称用作文件名,则会在某些系统上使用笨拙或不可能的文件名。因此,如果模块的名称是Text::Soundex
,那么它的定义实际上可以在库文件 Text / Soundex.pm 中找到。
特殊@INC
数组包含要搜索模块的目录:
@INC
数组
@INC
包含do EXPR
,require
或use
结构查找其库文件的地方列表。它最初由任何-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可以找到它的位置。