�Ȥ����櫓�ǡ������Ϥ��ޤ�ޤ��������ź��Υ����ʡ���
����ϡ�WEB+DB PRESS Vol.32�Ρ�Yahoo! Web �����ӥ����ѥ����ɡפ��顣
���WEB+DB Press�ؤ�Ϣ�ܤ�Ϥ��᤿�Τǡ�Ʊ��Τޤ��ޤ���(ȿ��|�˱�)�򵧤äƤ�ޤʤ��Τ����ɡ���������ˡ�Ʊ��ˤ�����������ץ륳���ɤ�����Τϵ��ˤʤ롣����������ư���Τǡ�blog�Ȥ���entry�Ǥ���Ф���Ǥ�褤�Τ����ɡ����μ�λ���Ϥ��ʤ�Ĺ�����ݴɤ��졢�ɼԤ˲��٤⻲�Ȥ���뤳�Ȥ�ͤ���С��֤��θ�פΤ��Ȥ�ͤ��ƿ��ʤ��Ƥ�������������������Damian����äƤ����褦�ˡ��֥����������ɤ�̤��μ�ʬ�ؤΥ�֥쥿���פʤΤ����ޤ��Ƥ䡢����˾����ϡ��ɼԤ˸�������֥쥿���Ǥ⤢��Τ����顣
Vol. 32 pp. 94
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: |
#!/usr/local/bin/perl -w use strict; use CGI; use LWP::Simple; use XML::Simple; use constant WEBAPI_BASEURL => 'http://api.search.yahoo.co.jp/WebSearchService/V1/webSearch?'; use constant MYYDN_APPID => 'YahooDemo'; use constant MAX_RESULTS => 10; my $q = new CGI; print $q->header(-charset => 'utf8'), $q->start_html(); print qq(<form><input type="text" name="query"><input type="submit" value="search"></form>); if ($q->param("query")){ (my $key = $q->param("query")) =~ s/(\W)/"%" . unpack("H2", $1)/ge; #�ꥯ������URI������ my $req_url = WEBAPI_BASEURL; $req_url .= "appid=YahooDemo"; $req_url .= "&query=".$key; $req_url .= "&results=".MAX_RESULTS; #API�إꥯ�����Ȥ����� my $yahoo_response = get($req_url); #��������XML��ѡ������� my $xmlsimple = XML::Simple->new(); my $yahoo_xml = $xmlsimple->XMLin($yahoo_response, ForceArray=>['Result']); print $yahoo_xml->{'totalResultsAvailable'} . "hits"; print "<ol>"; foreach my $result (@{$yahoo_xml->{'Result'}}){ print qq(<li><a href="$result->{'ClickUrl'}">$result->{'Title'}</a></li>); } print "</ol>"; } print $q->end_html(), "\n"; |
���ܸ��ơ�Perl�������ˤʤꤽ���ʥ������Ǥ��롣
�䤬refactor�����餳���ʤä���
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: |
#!/usr/local/bin/perl -T use strict; use warnings; use Readonly; use URI; use CGI qw/:standard/; use LWP::Simple qw/get/; use XML::Simple; use Encode qw/encode_utf8/; # to drop utf8 flag from XML::Simple Readonly my $WEBAPI_BASEURL => 'http://api.search.yahoo.co.jp/WebSearchService/V1/webSearch'; Readonly my $MYYDN_APPID => 'YahooDemo'; Readonly my $MAX_RESULTS => 10; print header(-charset => 'UTF-8'), start_html(-lang=> 'ja', -title=>$ENV{SCRIPT_NAME}, -encoding=>'UTF-8'), start_form(), textfield("query"), submit(-value=>"search"), end_form(), search_result(), end_html(); sub search_result{ return unless param("query"); my $uri = URI->new($WEBAPI_BASEURL); $uri->query_form( appid => $MYYDN_APPID, query => param("query"), results => $MAX_RESULTS ); my $response = get($uri) or return; my $xml = XML::Simple->new->XMLin($response, ForceArray=>['Result']); return $xml->{'totalResultsAvailable'}, "hits", ol(map { encode_utf8 li(a({href=>$_->{'ClickUrl'}}, $_->{'Title'})) } @{ $xml->{'Result'} } ); } |
����Ǥϡ������ʤ�褦���긵��Perl Best Practices��Perl�ץ�����ߥ󥰵�̿����������Фʤ���������������ϡ�Perl������ץȤ�񤤤Ƥ������äƤ���ҤȤ�ɬ���긵�ˤ����Ƥ����٤���������
�ޤ�������ΰ������顣���ꥸ�ʥ�Ǥ�use constant��ȤäƤ���������������ܤǤ��롣use constant�Ρ�����פϡ��¤�������֤�sub�ʤΤǡ�sigil ($@%&*)���������ä��Ƥ��ޤ��������qq()�ǥ��󥿡��ݥ졼�Ƚ���ʤ��Τ��ˤ����º�19���ܤǤϷ������ǤϤʤ�ʸ�����ƥ��򤽤Τޤ޻ȤäƤ��ꡢ�ޤ�ǰ�̣�ʤ��ˤʤäƤ��롣������Ȥ��Ƥ���ۤ�Ŭ�ڤʤΤ���������
Damian�����Τ�����ϡ�Readonly�⥸�塼�������˻Ȥ���������ǰ�ʤ���5.8���ߤǤ�core�����äƤ��ʤ�����5.10�Ǥ���������������������Ȥä�»�Ϥʤ�������������⤤��ʤ顢���ä�����ϻȤ�ʤ��ǺѤޤ��������ޤ��Ǥ��롣�������Ϥ��ޤ�Ȥ�ʤ���������Ǻ��ä����ϤۤȤ�ɤʤ����ɤ����Ƥ�Ȥ����Ȥ�������Ū��
sub DEBUG { 1 } # DEBUG ������Ȥ��ƻȤ�
�Ȥ��Ƥ��롣
�դ�qq()�����Ѥ���⤢�롣32���ܤǤϡ�$result->{'ClickUrl'}��qq()���������Ƥ��뤬��tag����ޤäƸ��Ť餤�ä��餢��㤷�ʤ��ʤ���������⡢Perl 6��->�����.�ؤΰܹԤϴ���)��������������
printf qq(<li><a href="%s">%s</a></li>), $result->{'ClickUrl'}, $result->{'Title'};
�Ȥ���С����äȸ��䤹���ʤ�ǤϤʤ�����perl�ˤ�qq()�����ǤϤʤ�sprintf()��printf()�⤢��Ȥ������Ȥ�Ф��Ƥ��������������ʸ����Ϣ��黻�ҤȤ��Ƥ�.�⤢�뤷(Perl 6�Ǥ�~)��Here Text�⤢�롣������ɤ��Ȥ�ʬ���뤫���Ӥθ�������������ͥ��ϡְ����ɤߤ䤹���ʤ�����פ��Ȼפ���
���˥����å������ꥸ�ʥ�Ǥ�HTML�ν��Ϥ������API�˥�����������XML��ѡ������Ƥ��η�̤���Ϥ��Ƥ��뤬��ñ�˸����ܤ����������ǤϤʤ����������Web Server��CGI Script���̿����֤�Ĺ���ʤäƥѥե����ޥ�Ū�ˤâ°ï¿½ï¿½ï¿½ï¿½ï¿½Ã¹ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½È½ï¿½ï¿½Ï½ï¿½ï¿½ï¿½ï¿½ï¿½Ê¬ï¿½ï¿½ï¿½ï¿½Î¤ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½
���ˡ�"en passant"�����ꥸ�ʥ�16���ܤ���
�����������Ȥ�JAPH������ץȤ�������Ǥ�äƤ��������������ֻ�Ϥ����ˤ�Perl���ΤäƤ��ޤ��פȤ����褦�Ǥ��ä������褦�˴����뤫�⤷��ʤ���������ϼ��ռ����Ȥ�����Τ����񤯤ʤ�
# my ($var = $oldvar) =~ s/$regexp/$replacement/ ������! my $var = $oldvar; $var =~ s/$regexp/$replacement/;
�Ȥ��٤��Ǥ��롣�����⤳�ξ�硢��ҤΤ褦�ˡ�������ʬ�ϼ¤�URI�⥸�塼���Ȥ����ˤ�����פˤʤäƤ��ޤ��ΤǤ��롣
LWP�����äƤ���С�����URI�⥸�塼�뤬�դ��Ƥ���Τ����������Ȥ�ʤ��Ȥ����Τ��Ի׵ĤǤ��롣���ꥸ�ʥ��18-21���ܤǤ�äƤ��뤳�Ȥϡ����ǤǤ�26-28���ܤ��о줹�뤬���ɤ��餬�狼��䤹����������?
�狼��ˤ������ʽ��������ä��顢�ޤ��������⥸�塼���õ���Ƥߤ롣����Ф����Ȥ����ʤ���Х⥸�塼��ˤ���CPAN�˾夲�롣���줬Best Practice�Ǥ��롣
�����ơ�CGI�⥸�塼��γ��ѡ�$q->param()�������ݤ���ʤ����޳�HTML��Ÿ���ˤ�ȤäƤ���ΤǤ���С���äȤ�äȳ��Ѥ��褦��
����$q->param()��Ȥäơ�����use CGI qw/:standard/��Ȥ����Ȥ����Τϡ��¤�non-trivial�ʼ���ʤΤ����ɡ����Τ褦��CGI������ץȤ��������ʸ�������������뤹����ˤϡ�use CGI qw/:standard/�ʤɤ�Ȥä�;�פ�$q->��ʤ����ƥ�ץ졼�Ȥʤɤ�Ȥäƽ������̤ˤʤäƤ�����ϡ�$q��Ȥäƽ������Ϥ��Ȥ����Τ����줤���Ĥ狼��䤹���ڤ�ʬ�����Ȼפ�����������ԤʤΤǡ����Τ褦�ˤ��Ƥߤ��餳��ʤ˥����ɤ����ä��ꤷ����
���ʤߤˡ����Υ���ץ륳���ɤΥ��ꥸ�ʥ�κ�Ԥϡ�Yahoo����ο͡��Ǥ��롣�ߤʤ���ϡ�Yahoo�Ǥ⤳�줯�餤�פȰ¿�������������������Ȥ�֤⤷�����ƥץ���������󥳡��ɤ⤳��ʴ���!?�פ��԰¤ˤʤä�����������
����ƣ���󡢤����ȻŻ����ޤ��礦
Dan the Contributing Writer Thereof
���꤬�Ȥ��������ޤ������䤷�ޤ�����
���줫����ɼԤ������®���˱ɤ����ޤ��ޤ�ȿ�Ǥ��뤳�Ȥ������ޤ�:)
Dan the Typo Generator