我有这个子Formatting Date::Manip's Delta to days
在我使用答案的帮助后,它完美地工作。今天我再次运行我的代码,Can't call method "value" on an undefined value at
行@val = $delta->value();
sub calc_usage {
my $date_from;
my $date_to;
my $delta = new Date::Manip::Delta;
my $period = 0;
my $i;
my @val;
for $i (0 .. $#DATE_HOLDER_USAGE) {
$date_from = new Date::Manip::Date;
$date_to = new Date::Manip::Date;
$date_from->parse($DATE_HOLDER_USAGE[$i][0]);
$date_to->parse($DATE_HOLDER_USAGE[$i][1]);
$delta = $date_from->calc($date_to, "business");
@val = $delta->value();
my @year_from = $date_from->value();
my @year_to = $date_to->value();
if ($date_to->is_business_day()) {
$period += $val[3]+1;
} else {
$period += $val[3]
}
}
$YEARLY_ALLOC_HTML = $period;
}
我不知道为什么会这样。
我填写@DATE_HOLDER_USAGE
后调用该函数,我有导入
use Date::Manip::Date;
use Date::Manip::Delta;
use Date::Manip;
(可能不是所有这些都必要吗?)
答案 0 :(得分:0)
小学生错误,我有一个新的条件限制了@DATE_HOLDER_USAGE
的填充
制动代码,有效地将非日期元素提供给日期解析器,不会从中获取任何值。
回复M42的评论
my @dates;
$dates[0] = $DATE_FROM;
$dates[1] = $DATE_TO;
$DATE_HOLDER_USAGE[$inc] = [@dates];
$inc++;
2012-12-28 2013-01-02
2012-06-18 2012-06-29
2012-02-16 2012-02-21
但是在某些情况下,我认为在持有者的某些地方根本不会有$ dates [0]和$ dates [1]。