2013-08-06 125 views
0

該腳本每次都從命令行運行,但很少從cron作業運行。我可以這樣運行:./chort.plLWP :: Simple和cron

但它與「錯誤值」的消息非常頻繁(不總是)死亡,而從cron調用它:

*/2 10-18 * * 1-5 /path/to/chort.pl >> /tmp/chort.pl 2>&1 

當它死了,比$res是空的。 print "*$res*\n";打印**。因此,看起來,從cron調用時獲取網頁存在問題。 下面的代碼段:

sub getLSEVal 
{ 
     my $fourWayKey =  shift; 
     my $url   =  "http://pat.to.url"; 
     my $res; 
     timeout 280 => sub { 
       $res =  get $url ; 

       return (-2, -2, -2); 
     }; 
     print $res; 
     $res   =~  /Price\| High \| Low .*?<tr class="odd">.*?<td>(.*?)<\/td>.*?<td>(.*?)<\/td>.*?<td>(.*?)<\/td>/msig; 
     my $c = $1; 
     my $h = $2; 
     my $l = $3; 
     print "$1 $2 $3\n"; 
     die ("wrong values") if $c !~ /\d+\.?\d*/ or $h !~ /\d+\.?\d*/ or $l !~ /\d+\.?\d*/; 
     return ($c, $h, $l); 
} 

回答

0

您可能需要使用LWP::UserAgent,它允許你控制的一個更高的水平。 LWP :: Simple有時太抽象,不知道出現問題時發生了什麼。