2012-02-10 19 views
3

私はこのサブFormatting Date::Manip's Delta to days を持っていました。今日、私は再び私のコードを実行して、私は@val = $delta->value();Date:Manipオブジェクトで不明なperl不定値

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; 
} 

Can't call method "value" on an undefined value atラインを取得し、私はこれが起こって始めた理由はわかりません。

@DATE_HOLDER_USAGEが充填された後、私は関数を呼び出して、私は輸入

use Date::Manip::Date; 
use Date::Manip::Delta; 
use Date::Manip; 

(おそらくすべてではないそれらの必要な?)

+0

'@ DATE_HOLDER_USAGE'に含まれているいくつかの値を表示できますか?それらのすべてがエラーを生成していますか? – Toto

答えて

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 

が、そこにいくつかの例では$日付も文句を言わない[0]と$日付[1]ホルダーにいくつかの場所ですべてでちょうど私が思うundefsを。

+1

問題は解決しましたか? – Toto

+0

はい私はすべてのデータを取得し、私の答えに答えたことを確認した、すべてが動作します – Recct

関連する問題