хорошо, я запускаю этот скрипт, который написан, чтобы сделать скриншоты веб-сайтов
у меня также работает и работает 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/
Что странного в выходных данных - см. Ниже ...
вопрос: стоит ли менять скрипт
почему я получаю вывод с помощью следующего маленького скрипта:
#!/usr/bin/perl
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 () или so + cket () или вызвать конструктор из пакета FileHandle
кроме того, в качестве альтернативы, print () для закрытого файлового дескриптора OUTPUT также дает множество ответов, которые скажут нам, что мы не использовали autodie, а также не проверяли возвращаемое значение open.
Прежде всего, я должен отладить его и убедиться, что ошибка обнаружена [/ QUOTE]
Но после некоторых размышлений я думаю, что стоит поближе взглянуть на все тестовые вещи,
Что вы думаете о тесте всегда , чтобы убедиться, что файл открыт перед его использованием. Это означает, что мы также должны привыкнуть использовать три
arg open():
open my $fh, '>', $name or die "Can't open file $name : $!";
print $fh $stuff;
хорошо - я думаю, что мы можем или должны обойти это без использования die()
,
но мы должны были бы вручную иметь какой-то метод, чтобы сообщить нам, какие файлы не могут быть созданы. В нашем случае это выглядит как все они .... которые показаны выше ...
обновление при выборе хорошего имени файла вы имеете в виду, что мне нужно иметь имя файла для хранения изображений. Примечание: я хочу хранить все из них локально . Но если у меня огромный список URL-адресов, я получаю огромный список выходных файлов . Поэтому мне нужно иметь хорошие имена файлов. Можем ли мы отразить эти вещи и потребности в программе!?
самое последнее обновление ; Кажется, есть некоторые ошибки с Mechanize .... я думаю, так !!!