Skip to content

Latest commit

 

History

History
executable file
·
906 lines (568 loc) · 23.5 KB

File metadata and controls

executable file
·
906 lines (568 loc) · 23.5 KB

NAME

HTML::Form - HTML �����í�若��荀�膣����茵◐憗�������壔�í�

SYNOPSIS

use HTML::Form;
$form = HTML::Form->parse($html, $base_uri);
$form->value(query => "Perl");

use LWP::UserAgent;
$ua = LWP::UserAgent->new;
$response = $ua->request($form->click);

DESCRIPTION

HTML::Form ��壔�í�鴻�勉�ŝ����吾�с�壔����壚����ゃ�� HTML �� <form> ... </form> 絎�篏����茵◐憗����障����� 筝���ゃ�勉����í�若����壔����勰����壠�������勌�������⓾��������罕������ɱ�ゃ�������������������с����� ��������ゃ����勐�ュ����ф�������������障����� �����í�若����勛�倶����壚信罩c�с����������������� LWP::UserAgent ��� request() ��<�純������� 羝<����� HTTP::Request ��ŝ����吾�с�壔��������緇���с����障�����

篁ヤ����勉�<�純����������ñ���櫝�純�с��:

@forms = HTML::Form->parse( $response )
@forms = HTML::Form->parse( $html_document, $base )
@forms = HTML::Form->parse( $html_document, %opt )

parse() ��壔�í�鴻�<�純�������� HTML �����吾�������若�鴻����⓾��<form> 荀�膣����荀���ゃ�����罸��� HTML::Form ��ŝ����吾�с�壔�����罕�膀������障����� ��鴻�˨�í�潟�潟����㏍�鴻����у�若�喝�冴����������������� <form> ���������菴���������障����� �����í�若�����荀���ゃ�������ŝ����c����翫����夌Ã��ŝ�鴻�����菴���������障�����

$base ��� $html_document ��勐��緇���˩戎��������� URI ��с����� ��������夌�後嚳��≪�壔�激�с�� URI ���茹f浦��������勉��綽�荀���с����� LWP ���篏帥�c�〠����吾�����緇����������������篁ヤ����勌����勉�������˨�� �����勐����違�� $response->base() �����������������障��:

my $ua = LWP::UserAgent->new;
my $response = $ua->get("http://www.example.com/form.html");
my @forms = HTML::Form->parse($response->decoded_content,
                                  $response->base);

parse() ��<�純�������� HTTP::Response ��ŝ����吾�с�壔����������贋・�����若�鴻�������������� ��с�������勉�с��筝�菴違�勌����壚札筝���勉�������˨����⓾�����箴水�í�˨�ŝ����障��:

my $ua = LWP::UserAgent->new;
my $response = $ua->get("http://www.example.com/form.html");
my @forms = HTML::Form->parse($response);

HTTP::Response �����������������ʋ�壔����������������� decoded_content() ��<�純�������� base() ��<�純��������絎�茖���������⓾�������í�勉������� ��ŝ����吾�с�壔����с��茵����������������羈���������⓾��������������

���緇���˨����í�勉�������˨����若�鴻�<�純����������壔����������������九勝��������ŝ����激�с�潟�� 羝<����障����� �憜��篁ヤ����勉�ŝ����激�с�潟��茯�茘������障��:

base

�����若�� URI ������箴�������������筝���ゃ�勖�号����с�����

verbose

��ŝ�� HTML �����í�若��罕�������荀���ゃ�����������STDERR ��˨�<����祉�若�吾����阪�������障�����

$method = $form->method
$form->method( $new_method )

�����勉�<�純�������壔��HTTP::Request ��������������������������˩戎��������� ��<�純����� ������ ���緇�/荐㊤�������障����� ��������� "GET" ��� "POST" ��勉�������ʋ��絖������с�����

$action = $form->action
$form->action( $new_action )

�����勉�<�純�������壔�ŝ�壔����鴻�� ��<�純����� �����ñ����������� URI ������緇�/荐㊤�������障�����

$enctype = $form->enctype
$form->enctype( $new_enctype )

�����勉�<�純�������壔����í�若�������若�帥�勉����潟�潟�若����c�潟�違�帥�ゃ��������緇�/荐㊤�������障����� ��������� "application/x-www-form-urlencoded" ��� "multipart/form-data" ��勉������� ���絖������с�����

$value = $form->attr( $name )
$form->attr( $name, $new_value )

�����勉�<�純�������壠����� <form> ��帥�違�� HTML 絮���с�吾�勉�≪�壔�祉�鴻�����箴������障����� $name ��壠幻���絨����絖���ф検���綽�荀������������障�����

箴�:

@f = HTML::Form->parse( $html, $foo );
@f = grep $_->attr("id") eq "foo", @f;
die "No form named 'foo' found" unless @f;
$foo = shift @f;
@inputs = $form->inputs

�����勉�<�純�������壔����í�若����勐�ュ����勉�ŝ�鴻�����菴������障����� ��鴻�˨�í�潟�潟����㏍�鴻����у�若�違����������������í�若�������˨�障����⓾�������ュ����勖�違��菴������障����� 菴������������ュ����ŝ����吾�с�壔����у�ñ���櫝�純�ŝ�<�純�������˨�ゃ����⓾� "INPUTS" ��������с����⓾��������������

$input = $form->find_input( $name )
$input = $form->find_input( $name, $type )
$input = $form->find_input( $name, $type, $index )

�����勉�<�純�������壔����í�若�������勛�劫����勐�ュ����勌��臀勉����ャ����������˩戎��������障����� 筝�������������綣���違�˨����������潟�違�������ュ�������⓾��菴���������障����� ��鴻�˨�í�潟�潟����㏍�鴻����с�壔�������������潟�違����ŝ�������� undef ������ �����������潟�違�������井�������勉����勉��������菴������障�����

$name ������絎������������翫�������ュ����壩��腓冴�������������������������ŝ�������違�ŝ����障��������

$type ������絎������������翫�������������壩��絎����������腮勰����с�ŝ�������違�ŝ����障�������� 篁ヤ����勛┏蕁����篏帥�������障��: "text", "password", "hidden", "textarea", "file", "image", "submit", "radio", "checkbox", "option"

$index ��壔����������潟�違�������ュ����勉�激�若�宴�潟�合�ɱ��(1 ���������)��с����� $name ��� $type ��◐����水�����������������筝����������������������腮勰���� n ��ɾ�勉����御����������障�����

$value = $form->value( $name )
$form->value( $name, $new_value )

value() ��<�純�������夌�劫����勐�ュ����勐�ゃ�����緇�/荐㊤����������������˩戎��������障����� ���絎������������������勐�ュ�������ŝ����翫����������勉�<�純�������� croak �����障�����

��������������勐�ュ�����茲���違�������翫�������������勉����勉��������綵演�帥����障�����

篁ヤ����勐�若�喝�冴��:

$form->value('foo')

��壚札筝���勉����勉�勛�㊦軒綵≪�с��:

$form->find_input('foo')->value;
@names = $form->param
@values = $form->param( $name )
$form->param( $name, $value, ... )
$form->param( $name, \@values )

�����í�若����勐�ゃ�勤Ě��祉�◑┃絎����茵������������勉�����筝���ゃ�勉�ゃ�潟�帥�若����с�若�鴻�с�����

綣���違�ŝ����у�若�違����������������í�若����勐����⓾�勐�ュ����勐��������菴������障����� ��������������勐�ュ�����茲���違����c�⓾��筝�綺⓾������憗����障�������� ��鴻�˨�í�潟�潟����㏍�鴻����с�壔����違�ŝ����������勖�違��菴���������障�����

綣���遺����ゃ�у�若�喝�冴��������������筝���������������������勐�ュ����勐�ゃ��菴������障����� ��鴻�˨�í�潟�潟����㏍�鴻����у�若�喝�冴����������������������勐�ゃ�勉�帥��菴���������障����� 筝���������������������勐�ュ�������ŝ����翫����壔��undef ���菴���������障�����

2 篁ヤ����勐����違�у�若�喝�冴����������������������勉�������ュ����勐�ゃ��荐㊤�������障����� �����勐就綣���壔��������筝������������������������ŝ����c�����������箴������������ゃ����ï�������ŝ����翫���� croak �����障����� ��ゃ�奝�������吾�勉�ŝ����<�㋘�潟�鴻�с�с�����箴���с����障����� �����勐就綣���壚����������������������勐����⓾�勐�ゃ����壔�ŝ�≪����������������堺�ャ�障�����

�����勉�ゃ�潟�帥�若����с�若�鴻�� CGI ��≪�吾�ャ�若�˨�� param() ��∽�違��篌若�⓾����障�����

$form->try_others( \&callback )

�����勉�<�純�������壔�障��荐ŝ����⓾����ŝ����������� (<select>, <radio>, <checkbox>) �� ���������絲障����☗��緇í��������������������絲障����� callback ���莎桁�������障����� callback ��壠����違�������� $form ���羝<�������障����� callback ��������勤�������ゃ�夌�∴�����������try_others() ��<�純�������ʃ昆��壚����� 菴������障��������

$request = $form->make_request

�����í�若����勛憜����勤┃絎���������������� HTTP::Request ���菴������障����� 篁c�������� click() ��<�純��������篏帥����������������ャ����障��������

$request = $form->click
$request = $form->click( $name )
$request = $form->click( $x, $y )
$request = $form->click( $name, $x, $y )

��壔�ŝ����壔�с�������ュ�� (������ submit ��障����� image ��勉�����) ��� �����壔�ŝ����壔�������障����� ��壔�ŝ����壔�勛�������壔����������泣�若����㋘�鴻����潟�鴻����祉�������翫����壠����� LWP::UserAgent �� 羝<����� HTTP::Request ��ŝ����吾�с�壔����с�����

$name ������絎����������������筝���������������������������ゆ�������勉�壔�ŝ����壠櫝�純�ɱ�ュ����� ��壔�ŝ����壔��������������筝���������������������勉�壔�ŝ����壠櫝�純�ɱ�ュ�����荀�篁���������ŝ����c����翫���� croak �����障����� $name ������絎� ��������ŝ�� ��翫����壔�������í�若����˨�壔�ŝ����壠櫝�純�ɱ�ュ�������ŝ����⓾�� ��馹���������障�������� �����勐�翫�����click() ��<�純�������� make_request() ��<�純����������������ŝ�壔����鴻����� 菴������障�����

��������������ц����違�勉�壔�ŝ����壠櫝�純�ɱ�ュ�������������翫�������������勉����勌札紊���� ��壔�ŝ����壔����������������� HTML::Form ��� click() ��<�純�������х�ャ����号���� ��������障�������� ���������綽�荀���ŝ�����find_input() ��у�ュ����勌��臀勉���「�����⓾��緇������������ュ����ʃ昆�� 絲障����� click() ��<�純��������莎桁��������綽�荀������������障�����

��壔�ŝ����壠婚罔���勛��������箴���������障����������糸�������壔�ŝ����壔����������������˨�勉� �����������������障����� ��������í�˨����勐婚罔���� (1,1) ��с����� ��糸����勐窪筝���勰����� (0,0) ��с����������������c�⓾�潟�若����c�潟�違�������� CGI ��鴻�壔�ŝ�������˨� ���������茯�茘������ŝ�������������ャ�������⓾����障����� 緇���c�� (1,1) ��壔�����絎������ŝ�������í�˨����������☁�御����������障��������

@kw = $form->form

�憜����勤┃絎������㏍��/��ゃ�勛����������☀�������障����� ��㏍�若�夌弘���菴������������������������ŝ����勉�с��菴������ゃ����������激�ャ�˩撮��ャ������� ��ゃ�勌��������紊宴����������������������ŝ�����������羈���������⓾��������������

��鴻�˨�í�潟�潟����㏍�鴻����с�壔����勉�<�純�������夌����������������㏍��/��ゃ�勛����勖�違��菴������障�����

$form->dump

�����í�若����勛憜����勛�倶����勉����㏍�鴻��茵◐憗��菴������障����� 筝祉�˨����������違����������с����� ��≦�鴻�潟�潟����㏍�鴻����у�若�喝�冴�������������������潟����� STDERR �����阪����������障�����

INPUTS

(��ュ��)

HTML::Form ��ŝ����吾�с�壔����� ��ュ��(input) ��勛�������˨�帥�障����� ��ュ����吾�勉�ŝ����<�㋘�潟�鴻�� $form->inputs ��<�純�������� $form->find_input ��<�純������� 緇���������障�����

��ュ�� ��ŝ����吾�с�壔�� ������HTML �����吾�� <input> 荀�膣� ��� 1 絲� 1 �� 絲上�������ŝ�� ���������羈���������⓾�������������� ��ュ����ŝ����吾�с�壔����壠�堺�㋜����˩����ゃ�勐�����/��ゃ�勛�����茵◐憗�������勉�с��������������/��ゃ� 腟�������箴�������茲���違�� HTML 荀�膣���夌�������������障�����

1 絲� 1 ��с����������潟�違����������ュ��荀�膣���� "text", "textarea", "password", "hidden", "file", "image", "submit", "checkbox" ��с����� "radio" ��� "option" ��ュ����с�虁º��壔�������祉�ñ亜�����с�壔�������障�����: ��������������������ゅ����⓾�� <input type="radio"> 荀�膣���壠�������ュ�� radio ��ŝ����吾�с�壔��������箴���������障����� radio ��ュ����ŝ����吾�с�壔����勖�違�� <input type="radio"> 荀�膣���т戎��������⓾����� ��違�ŝ����������勖�違����������с����� multiple 絮���с�勉�ŝ�� <select> 荀�膣���勐�翫�����"option" ����� 筝���ゃ�勐�ュ����ŝ����吾�с�壔����с����� <select multiple> 荀�膣���勐�翫�������������������� <option> 荀�膣���� ��˨�����筝���ゃ�勐�ュ����ŝ����吾�с�壔����с����� ������������ option ��ŝ����吾�с�壔����勉�������������壠�������������������<�障�����

篁ヤ����勉�<�純�������� input ��ŝ����吾�с�壔����у�ñ���櫝�純�с��:

$input->type

�����勐�ュ����勛┏蕁����菴������障����� 腮勰����壚札筝���勖��絖������勌����ゃ�с��: "text", "password", "hidden", "textarea", "file", "image", "submit", "radio", "checkbox", "option"���

$name = $input->name
$input->name( $new_name )

�����勉�<�純�������壠�ュ����勛憜����勐�����������緇�/荐㊤����с����障�����

$value = $input->value
$input->value( $new_value )

�����勉�<�純�������壠�ュ����勛憜����勐�ゃ�����緇�/荐㊤����с����障�����

��ュ����������������������ゃ�勉�ŝ�鴻�������<�勌����ゃ����������������翫�������������ゃ�� 荐㊤����������������������������壔����í�若�с�������������������������������������<�純������� croak �����障�����

��障�����茯㏍�粋昭��水�������ュ����勐�ゃ��荐㊤�������������������с����障�������� perl -w ��у��茵���������⓾�������翫����虁⑥��������榊�������障�����

$input->possible_values

��ュ����������������������с����������⓾�勐�ゃ�勉�ŝ�鴻�����菴������障����� ��∽�e�ゃ����������ュ����с�ŝ����翫����壔��腥冴�ŝ�鴻�����菴������障�����

$input->other_possible_values

��障��荅⓾����⓾����ŝ�������⓾�勐�ゃ�勉�ŝ�鴻�����菴������障�����

$input->value_names

筝������勐�ュ����с�壔����ゃ����よ�ʃ昆��◒��������������篁������������障����� �����勉�<�純�������ц�������������������勖�違�� $input->possible_values ��у�怨����������� ��ゃ�勖�違��筝���眼����障�����

value() ��<�純��������篏帥�c�☗�ゃ��荐㊤�������������������よ�ʃ昆��勌撮�����������ゃ�勐�������� 篏帥������������櫝�純�с�����

$bool = $input->readonly
$input->readonly( $bool )

�����勉�<�純�������虁˛��粋昭��水�����(readonly)絮���с�勐�ゃ�����緇�/荐㊤����������������˩戎�����障����� 茯㏍�粋昭��水�������勐�ュ����勐�ゃ��紊������������������с����障����������ゃ��荐㊤���������� 茘☗����������鴻�勖����˨�虁⑥��������阪����������障����� hidden �����c�若�˨����壠幻��̬˛��粋昭��水�������у����障����障�����

$bool = $input->disabled
$input->disabled( $bool )

�����勉�<�純�������夌�≦��(disabled)絮���с�勐�ゃ�����緇�/荐㊤����������������˩戎��������障����� ��≦�鴻�勐�ュ����壔����í�若����勐�ゃ�勉�������˨�㏍��/��ゃ�勛��������箴������障��������

$input->form_name_value

�����勐�ュ����������勉����í�若����勐�ゃ�◒�f�冴����⓾�������㏍��/��ゃ�勛����勉�ŝ�鴻�� (腥冴�������������障�����)���菴������障�����

$input->check

筝������勐�ュ����壔�ŝ��/��ŝ����с����������違�˨��茵◐憗����⓾����障����� ��������� "checkbox" ��� "option" �����˨�帥�障����� �����勉�<�純����������若�喝�冴�������������勐�ュ����勛憜����勐�ゃ����ャ����ŝ����⓾����ŝ�潟�˨�ŝ����障����� ��ュ�������≪�˨�ŝ�潟�ŝ�����篏����莎激����障��������

��������壚札筝������������号����с��:

$input->value($input->possible_values[1]);

��ュ����壚札筝���勉�������˨����⓾�ŝ����˨�с����障��:

$input->value(undef);
$input->click($form, $x, $y)

筝������勐�ュ�� (�憜����勉�������� "submit" �����帥�潟�� "images") ��壔����í�若����� ���篆<�������������˨�壔�ŝ����壔�с����障����� click() ��<�純�������壠嚳綽������� HTTP::Request ��ŝ����吾�с�壔�����菴������障�����

��ュ����勛┏蕁���� file ��勐�翫�����菴遵����勉�<�純����������������障��:

$input->file

��������壠����� value() ��<�純�������勐�ュ����с����� �����若�帥��茯㏍�粋昭��������<�ゃ��������荐㊤�������障�����

$filename = $input->filename
$input->filename( $new_filename )

��������壔����<�ゃ�˨�≪�������㏍�若��筝㏍�˨�泣�若�������怨����������������<�ゃ��������荐㊤��/���緇������障����� �����勐����с�勉�������í�˨����� file() ��<�純�������у�怨�������������ゃ�с�����

$content = $input->content
$input->content( $new_content )

��������壔����<�ゃ�˨�≪�������㏍�若��筝㏍�˨�泣�若��������箴���������������<�ゃ�˨�勐��絎鴻�� ���緇�/荐㊤�������障����� �����勉�<�純�������壔��絎������勉����<�ゃ�˨��������絎鴻��茯㏍�粋昭��帥�������ŝ����翫����˩戎�����障�����

@headers = $input->headers
input->headers($key => $value, .... )

��������壔�≪�������㏍�若����������������<�ゃ�˨��茵◐憗�����菴遵����勉�������������c�若�˨����� ���緇�/荐㊤�������障����� ��������壚�������違����<�ゃ�˨�勉����������怨�������� Content-Type ��勤┃絎���˩戎�����障�����

SEE ALSO

LWP, LWP::UserAgent, HTML::Parser

COPYRIGHT

Copyright 1998-2005 Gisle Aas.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.