如何在分发目录中使用Perl模块?

时间:2009-09-02 06:13:04

标签: perl module

假设我从http://guest.engelschall.com/~sb/download/下载了Date::Calc

现在,我有一个脚本xxx.pl,它与我从上面的链接下载的未修改的“东西”位于同一目录中 当解开时,它会创建一个包含大量内容的“Date-Calc-5.6”文件夹。

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

4 个答案:

答案 0 :(得分:7)

首先需要install the module

@INC语句中,指定包含Perl模块的目录。或者使用语句:use lib "path",以便能够通过其他use语句加载模块。

答案 1 :(得分:2)

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

答案 2 :(得分:1)

安装是首选方法,但如果您只想在不安装的情况下尝试安装,则可以执行此操作。

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

请切换我的目录,解压缩您的目录。另请阅读lib

答案 3 :(得分: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;

  6. BEGIN {
        push @INC, "/the/distribution/dir";
    }
    use The::Package;