2013-03-06 2 views
0

У меня есть следующий очень простой кусок кода:Perl Использование неинициализированного значения в дополнение (+) в .. WWW :: Механизируйте :: Временный

#!/usr/bin/perl 

use strict; 
use warnings; 

use WWW::Mechanize::Timed; 
my $ua = WWW::Mechanize::Timed->new(); 
my $url = 'www.stackoverflow.com'; 

$ua->get($url);  
print "Total time: " . $ua->client_total_time . "\n"; 
print "Elapsed time: " . $ua->client_elapsed_time . "\n"; 

Ошибка я получаю:

При запуске программы я иногда получаю следующую ошибку, она не происходит все время, кажется, что она появляется с перерывами.

Use of uninitialized value in addition (+) at /usr/local/share/perl/5.10.1/WWW/Mechanize/Timed.pm line 52.

Есть ли что-то очевидно, я с видом, как я не могу понять, почему эта ошибка происходит, не говоря уже, почему это происходит только иногда?

Ваша помощь очень ценится, большое спасибо

+2

Вы должны закончить сообщение: 'at ...' какая строка и какой файл? Также подумайте об использовании «Carp :: Always», чтобы получить более полезное сообщение. – mob

+0

@mob - добавила остальную часть ошибки на мой вопрос, спасибо –

ответ

2

Я считаю, что проблема в том, что

my $url = 'www.stackoverflow.com'; 

не является действительным URL. Это просто имя хоста. Вы говорите, что ваша программа иногда работает без указания схемы http://? Вам нужно

my $url = 'http://www.stackoverflow.com'; 

Кроме того, вы хотите проверить код возврата из ->get(), или добавить autocheck => 1 конструктору. В какой-то момент :: История Механизации, которая стала дефолтом, но я не знаю, в какой версии вы находитесь.

+1

Да, вы правы, большое вам спасибо. В моей программе каждый из URL-адресов обрабатывался из большого текстового файла, так получилось, что несколько URL-адресов были помещены в текстовый файл без префикса 'http: //', поэтому проблема только иногда возникал, когда он сталкивался с этими URL-адресами без 'http: //', спасибо за ваш быстрый ответ. –