Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> HTML::Form выдаёт ошибку 
V
    Опции темы
Anarki
Дата 25.5.2006, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 14.3.2005

Репутация: 1
Всего: 11



Код

my $response = $ua->get($url);
if ($response->is_success) { # первая страница с формой
        my $rv1 = parseform(\$response);
...

sub parseform {
    my $response = ${$_[0]};
        my @forms = HTML::Form->parse( $response );
...

Когда обрабатываю некоторые страницы, то выдаёт такое.
Код

No 'doc' or 'file' given to parse from at /usr/local/lib/perl5/site_perl/5.8.8/HTML/Form.pm line 117

Что это? отчего возникает, из-за кривости HTML документа?  

Это сообщение отредактировал(а) Anarki - 25.5.2006, 14:57


--------------------
PM WWW   Вверх
sharq
Дата 25.5.2006, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 23
Всего: 28



Anarki, в общем можешь сам по модулям проследить, что происходит. 
Там завязано еще несколько модулей.

Такое ощущение, что $response подводит тебя, а именно метод $response->decoded_content(ref => 1). 
Обычно, кроме is_success следует проверять $responce->content на существование, т.к. документ может существовать, но быть пустым.

Привиди пример конкретной страницы, а-то гадать тяжело smile

И зачеи ты в свою функцию передаешь ссылку, а затем ее разыменовываешь, это лишняя операция.

 smile 


 


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
Anarki
Дата 25.5.2006, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 14.3.2005

Репутация: 1
Всего: 11



Цитата

И зачеи ты в свою функцию передаешь ссылку, а затем ее разыменовываешь, это лишняя операция.

Я вначале подумал, может из-за этого и решил по ссылке передать 


--------------------
PM WWW   Вверх
rcdimon
Дата 25.5.2006, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 766
Регистрация: 12.7.2004
Где: Москва

Репутация: 1
Всего: 2



Гы.. Вот кому-то делать нечего. Не проще ли формы ручками создавать в HTML файле... никаких HTML модулей никогда не использовал и не буду 
PM MAIL ICQ   Вверх
Anarki
Дата 26.5.2006, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 14.3.2005

Репутация: 1
Всего: 11



Цитата(rcdimon @  25.5.2006,  23:24 Найти цитируемый пост)
Гы.. Вот кому-то делать нечего. Не проще ли формы ручками создавать в HTML файле... никаких HTML модулей никогда не использовал и не буду 

Это парсер форм

Добавлено @ 11:33 
Цитата(sharq @  25.5.2006,  19:36 Найти цитируемый пост)
Привиди пример конкретной страницы, а-то гадать тяжело 

http://ceserver.no-ip.org/
Хоть там и нет форм, но ошибку он выдает такую( Со многими другими страницами, где тоже нет форм, никаких ошибок модуль не выдает обычно) 


--------------------
PM WWW   Вверх
sharq
Дата 26.5.2006, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 23
Всего: 28



Anarki, ну так и есть, $response->decoded_content - возвращает undef, из-за этого и возникает ошибка. 

В общем смотри
Код

if ($response->is_success && $response->decoded_content) { # т.е. чтобы скрипт корректно отрабатывал
    my @forms = HTML::Form->parse($response);
}


или

Код

if ($response->is_success) {
    my @forms = HTML::Form->parse($response->content, $response->base); # передавать содержимое страницы, тогда будет тип file, а не doc и корректно будет обрабатываться
}


 smile   

Это сообщение отредактировал(а) sharq - 26.5.2006, 12:23


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
Anarki
Дата 26.5.2006, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 14.3.2005

Репутация: 1
Всего: 11



Да, так заработало, спасибо.
В документации не нашел метод decoded_content();
 


--------------------
PM WWW   Вверх
sharq
Дата 26.5.2006, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 23
Всего: 28



Anarki, метод decoded_content находится не в HTML::Form, этот метод наследуется, определен он HTTP::Message.

Советую посмотреть исходный код модулей. 

 smile  


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1190 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.