• ベストアンサー

Perl webのテキストボックスに入力し送信取得

Perl初学者です。Perlでのインターネット通信に興味があります。 webサイトのテキストボックスにテキストを入力し、それを送信・結果を取得するためのプログラムを教えてください! (例) 単語を英訳するプログラムが作りたかったので、”http://ejje.weblio.jp/”の検索ボックスに単語を入れて送信し、帰ってきたURLのhtmlを取得する、といった感じ? 少し勉強したLWPモジュールを使って頂けると嬉しいです。 もちろん、こっちの方が効率がいいよ、といった方法があれば是非教えてください! よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

適当。表示がくずれるので、空白2文字を全角空白にしていることに注意。 #!/usr/bin/perl -T use strict; use warnings; use utf8; use CGI; use CGI::Carp qw(fatalsToBrowser); use CGI::Pretty; use Encode; use LWP::UserAgent; use HTTP::Response; use HTML::TreeBuilder; use constant URL => q{http://ejje.weblio.jp/content}; my $q  = CGI->new(); my $word = $q->param("word"); my $mean = q{}; if ( defined $word ) {   my $ua = LWP::UserAgent->new;   $ua->agent('Mozilla/5.0');   $ua->timeout(10);   my $url = URL . '/' . $word;   my $req = HTTP::Request->new( GET => $url );   my $res = $ua->request($req);   if ( $res->is_success ) {     my $tree = HTML::TreeBuilder->new;     $tree->parse( decode( 'utf8', $res->content ) );     my ($attr) = $tree->look_down( 'class', 'Kejje' );     $mean = $attr->as_HTML;   }   else {     $mean = $res->error_as_HTML;   } } else {   $word = ''; } my $body = do { local $/; <DATA> }; $body =~ s/%%word%%/$word/; $body =~ s/%%mean%%/$mean/; binmode STDOUT, ':encoding(utf8)'; print $q->header( -charset => 'UTF-8' ),   $q->start_html( -title => "test", -lang => 'ja', ),   $body,   $q->end_html; __DATA__ <form method="get"> Word : <input type="text" name="word" /><br/> <input type = "submit" /> </form> <hr> Word : <br> %%word%% <br> Mean : <br> %%mean%%

gohandaisuki520
質問者

お礼

回答ありがとうございます。 なんとか読み解いてみようと思います!

すると、全ての回答が全文表示されます。

関連するQ&A