假设我从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”错误)
假设我从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”错误)
您必须安装模块。在大多数情况下,最好通过忽略源代码tarball和using the cpan utility(on * nix)或PPM管理器(在ActivePerl for Windows上)来实现。
http://strawberryperl.com/是另一个(*,在我看来,上级*)perl for windows。它包含cpan及其所需的全部内容(* make和编译器*) – Nifle 2009-09-02 07:30:04
您可以使用'cpan .'从当前目录安装.' – 2009-09-02 18:21:41
您首先需要install the module。
在您的@INC
语句中,指定包含Perl模块的目录。或者使用声明:use lib "path"
能够通过额外的use
语句加载模块。
安装是首选的方法,但如果你只是想不尝试安装,你可以做到这一点。
use strict;
use warnings;
use lib '/home/jeremy/Desktop/Date-Calc-5.8/lib';
use Date::Calc;
请将我的目录切换到您的解压缩位置。另请阅读有关lib。
您不一定需要构建和安装模块。如果模块是纯Perl,并且构建过程不会创建任何新的代码文件,那么您可以在模块“仍在框中”的情况下使用模块。假设情况如此,有多种方法可以做到这一点。
编辑:它看起来不像Date::Calc
是纯粹的Perl。在使用模块之前,您可能至少必须构建它。
设置$PERL5LIB
环境变量以包括程序包分发目录。
调用perl
与-I
开关
perl -I/the/distribution/dir myscript.pl
把-I交换机上的#!脚本(第一)行
#!/usr/bin/perl -I/the/distribution/dir
使用use lib
脚本
use lib qw(/the/distribution/dir);
use The::Package;
将分发目录到@INC
变量
push @INC, "/the/distribution/dir";
require The::Package;
或
BEGIN {
push @INC, "/the/distribution/dir";
}
use The::Package;
您使用的是什么操作系统?什么版本的Perl? – innaM 2009-09-02 07:56:21
听起来你已经下载了模块并提取了tar文件。但是,它似乎并没有实际安装模块。你将不得不做这一步。这个特定步骤取决于您的操作系统。所以我们需要知道曼尼评论的答案。 – Danny 2009-09-02 13:53:04
这一步不依赖于操作系统,只对Perl的版本略有影响。对于过去几年中的任何perl,'cpan .'都会将该分发版安装在当前工作目录中,而不关心您所在的平台。 – 2009-09-02 18:23:03