2009-09-02 59 views
1

假设我从http://guest.engelschall.com/~sb/download/下载了Date::Calc如何使用分发目录中的Perl模块?

现在,我有一个脚本,xxx.pl,它与我从上面的链接下载的untar-ed“东西”位于同一个目录中。当解压缩时,它会创建一个“Date-Calc-5.6”有吨的东西文件夹。

如何在xxx.pl中包含Date::Calc? (我不断收到“无法在@INC中找到Date/Calc.pm”错误)

+3

您使用的是什么操作系统?什么版本的Perl? – innaM 2009-09-02 07:56:21

+1

听起来你已经下载了模块并提取了tar文件。但是,它似乎并没有实际安装模块。你将不得不做这一步。这个特定步骤取决于您的操作系统。所以我们需要知道曼尼评论的答案。 – Danny 2009-09-02 13:53:04

+1

这一步不依赖于操作系统,只对Perl的版本略有影响。对于过去几年中的任何perl,'cpan .'都会将该分发版安装在当前工作目录中,而不关心您所在的平台。 – 2009-09-02 18:23:03

回答

2

您必须安装模块。在大多数情况下,最好通过忽略源代码tarball和using the cpan utility(on * nix)或PPM管理器(在ActivePerl for Windows上)来实现。

+5

http://strawberryperl.com/是另一个(*,在我看来,上级*)perl for windows。它包含cpan及其所需的全部内容(* make和编译器*) – Nifle 2009-09-02 07:30:04

+1

您可以使用'cpan .'从当前目录安装.' – 2009-09-02 18:21:41

7

您首先需要install the module

在您的@INC语句中,指定包含Perl模块的目录。或者使用声明:use lib "path"能够通过额外的use语句加载模块。

1

安装是首选的方法,但如果你只是想不尝试安装,你可以做到这一点。

use strict; 
use warnings; 
use lib '/home/jeremy/Desktop/Date-Calc-5.8/lib'; 
use Date::Calc; 

请将我的目录切换到您的解压缩位置。另请阅读有关lib

1

您不一定需要构建和安装模块。如果模块是纯Perl,并且构建过程不会创建任何新的代码文件,那么您可以在模块“仍在框中”的情况下使用模块。假设情况如此,有多种方法可以做到这一点。

编辑:它看起来不像Date::Calc是纯粹的Perl。在使用模块之前,您可能至少必须构建它。

  1. 设置$PERL5LIB环境变量以包括程序包分发目录。

  2. 调用perl-I开关

    perl -I/the/distribution/dir myscript.pl

  3. 把-I交换机上的#!脚本(第一)行

    #!/usr/bin/perl -I/the/distribution/dir

  4. 使用use lib脚本

    use lib qw(/the/distribution/dir);

    use The::Package;

  5. 将分发目录到@INC变量

    push @INC, "/the/distribution/dir";

    require The::Package;

BEGIN { 
    push @INC, "/the/distribution/dir"; 
} 
use The::Package; 
相关问题