风扇
对不起这个新手问题,但我在google上找不到我需要知道的内容。我理解印刷品,但不明白这一点......
http://www.unifr.ch/sfm
print() on closed filehandle OUTPUT at test_3.pl line 20, <INPUT> line 2.
http://www.zug.phz.ch
在下面看到更多......
好吧 - 这是什么意思?非常感谢您的耐心等待。
从头开始:我运行这个脚本,这是为了做一些我已经运行的网站的截图并运行mozrepl 这里我们有一些请求的URL文件...请注意,这只是真实列表的一小段 - 真正的列表要长得多。它包含超过3500行和URL
http://www.unifr.ch/sfm
http://www.zug.phz.ch
http://www.schwyz.phz.ch
http://www.luzern.phz.ch
http://www.schwyz.phz.ch
http://www.phvs.ch
http://www.phtg.ch
http://www.phsg.ch
http://www.phsh.ch
http://www.phr.ch
http://www.hepfr.ch/
http://www.phbern.ch
http://www.ph-solothurn.ch
http://www.pfh-gr.ch
http://www.ma-shp.luzern.phz.ch
http://www.heilpaedagogik.phbern.ch/
输出是什么奇怪 - 见下文...... 问题:我应该更改脚本吗
为什么要使用以下小脚本来输出输出:
use strict;
use warnings;
use WWW::Mechanize::Firefox;
my $mech = new WWW::Mechanize::Firefox();
open(INPUT, "<urls.txt") or die $!;
while (<INPUT>) {
chomp;
print "$_\n";
$mech->get($_);
my $png = $mech->content_as_png();
my $name = "$_";
$name =~s/^www\.//;
$name .= ".png";
open(OUTPUT, ">$name");
print OUTPUT $png;
sleep (5);
}
在这里看到压倒性的输出 - 坦率地说,我从来没有得到如此有趣的输出..我必须调试整个代码....见下文,
http://www.unifr.ch/sfm
print() on closed filehandle OUTPUT at test_3.pl line 20, <INPUT> line 2.
http://www.zug.phz.ch
print() on closed filehandle OUTPUT at test_3.pl line 20, <INPUT> line 3.
http://www.schwyz.phz.ch
print() on closed filehandle OUTPUT at test_3.pl line 20, <INPUT> line 4.
http://www.luzern.phz.ch
print() on closed filehandle OUTPUT at test_3.pl line 20, <INPUT> line 5.
http://www.schwyz.phz.ch
print() on closed filehandle OUTPUT at test_3.pl line 20, <INPUT> line 6.
http://www.phvs.ch
print() on closed filehandle OUTPUT at test_3.pl line 20, <INPUT> line 7.
http://www.phtg.ch
print() on closed filehandle OUTPUT at test_3.pl line 20, <INPUT> line 8.
http://www.phsg.ch
print() on closed filehandle OUTPUT at test_3.pl line 20, <INPUT> line 9.
http://www.phsh.ch
print() on closed filehandle OUTPUT at test_3.pl line 20, <INPUT> line 10.
http://www.phr.ch
print() on closed filehandle OUTPUT at test_3.pl line 20, <INPUT> line 11.
http://www.hepfr.ch/
print() on closed filehandle OUTPUT at test_3.pl line 20, <INPUT> line 12.
http://www.phbern.ch
好吧,我已经尝试了很多错误摆脱
一些想法:首先,我认为这不是一个非常严重的错误 - 我认为我必须调试它然后它会更好地工作。
其次,我首先认为脚本似乎“超载机器”?
现在我不是很确定:症状确实看起来很奇怪,但我想结束“机器超载”并不是必要的
第三,我认为必须采取某些步骤来确保问题与WWW :: Mechanize :: Firefox完全相关?
这让我想到了Perl警告意味着什么,以及使用诊断实用程序获得更多解释的想法:你怎么看?
print() on unopened filehandle FH at -e line 1 (#2) (W unopened) An I/O operation was attempted on a filehandle that w +as never initialized.
好吧 - 我们需要做一个open(),一个sysopen()或者一个+ cket()调用,或者从FileHandle包调用一个构造函数
好吧 - 或者,关闭文件句柄OUTPUT上的print()也会给出很多答案,告诉我们我们没有使用autodie,也没有检查open的返回值。 我必须调试它,并确保找到错误发挥作用的地方
对不起这个新手问题,但我在google上找不到我需要知道的内容。我理解印刷品,但不明白这一点......
答案 0 :(得分:0)
它是一个旧帖子,但没关系
我猜你没有权限在目录中写一个文件。因此,如果您无法打开文件句柄,print()
将无法写入文件句柄。
做下面的事情可能更合适
open(OUTPUT, ">$name") or die "Cannot open file...\n";