perl中的“找不到DateTime.pm”错误

时间:2013-12-11 11:37:52

标签: perl

在运行脚本时我遇到错误:

Can't locate DateTime.pm in @INC (@INC contains: /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/ve

我的代码是:

#!/usr/bin/perl

use DBI;
use POSIX qw(strftime);
use DateTime;

my $dbh = DBI->connect(
    "dbi:mysql:dbname=agilefant-test",
   "agilefant-test",
    "Agilefant-test",
    { RaiseError => 1 },
) or die $DBI::errstr;

my $datestring = strftime "%Y %m %d %X", gmtime;
my $fourteen_days_from_now = $datestring->add(days =>14);

my $sth = $dbh->prepare("Insert into backlogs (backlogtype, id, description, name, backlogSize, baselineLoad, endDate, readonlyToken, startDate, rank, status, parent_id)
values ('Project' , '200', 'Sanchit Testing', 'Maintenance agilefant', NULL, NULL, ('$fourteen_days_from_now'), NULL, ('$datestring'), NULL, NULL, '34')");
$sth->execute() or die $DBI::errstr;
$sth->finish();

从之前的问题来看,它不同因为我没有权利升级我的系统,而且我想将结束日期设置为从当前日期起14天之后。所以也需要帮助。

3 个答案:

答案 0 :(得分:1)

如果您使用的系统无法应用升级,则应考虑perlbrew。 它为当前用户本地处理所有perl管理。 即,您不需要管理员权限。

答案 1 :(得分:1)

您可以使用Time::PieceTime::Seconds为日期添加天数,并且还有POSIX strftime。此外,它们是自v5.9.5起的Perl核心模块。

use strict;
use warnings;
use Time::Piece;
use Time::Seconds;

my $t = localtime;
$t += ONE_DAY * 14;
print $t->strftime('%Y %m %d %X');

答案 2 :(得分:0)

我认为最好的解决方案是安装缺少的模块。

如果您无法安装它,根据您的代码,也许您只想在今天之后的14天内获取日期字符串?您可以通过时间自行计算。

试试这个:

perl -MPOSIX -e '$t = strftime "%Y%m%d", localtime(time() + 14 * 24 * 3600); print $t'