【问题标题】:Perl Use of uninitialized value in addition (+) at.. WWW::Mechanize::TimedPerl 在.. WWW::Mechanize::Timed 处使用未初始化的值 (+)
【发布时间】:2013-03-25 22:09:42
【问题描述】:

我有以下非常简单的代码:

#!/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.

有什么明显的我忽略了,因为我无法理解为什么会发生这个错误,更不用说为什么它只是有时会发生?

非常感谢您的帮助,非常感谢

【问题讨论】:

  • 您应该完成消息:at ... 什么行和什么文件?也可以考虑使用Carp::Always 来获得更有帮助的信息。
  • @mob - 将其余错误添加到我的问题中,谢谢

标签: perl www-mechanize


【解决方案1】:

我认为问题在于

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

不是实际的 URL。这只是一个主机名。您是说您的程序有时可以在不指定http:// 方案的情况下工作吗?你需要

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

另外,您想检查来自->get() 的返回码,或者将autocheck => 1 添加到构造函数中。 ::Mechanize 历史中的某个时刻成为默认设置,但我不知道您使用的是哪个版本。

【讨论】:

  • 是的,你是对的,非常感谢。在我的程序中,每个 url 都是从一个大文本文件中解析出来的,碰巧有一些 url 被放入没有 http:// 前缀的文本文件中,这就是为什么问题似乎只是当遇到这些没有http:// 的网址时偶尔会发生,感谢您的快速回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-19
  • 1970-01-01
  • 2016-09-25
  • 2013-04-08
  • 1970-01-01
  • 2015-06-03
  • 2012-10-09
相关资源
最近更新 更多