在运行脚本时我遇到错误:
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天之后。所以也需要帮助。
答案 0 :(得分:1)
如果您使用的系统无法应用升级,则应考虑perlbrew。 它为当前用户本地处理所有perl管理。 即,您不需要管理员权限。
答案 1 :(得分:1)
您可以使用Time::Piece
和Time::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'