#! /usr/bin/perl use strict; use CGI; use LWP::UserAgent; use JSON::Syck; use URI; use URI::QueryParam; use URI::Escape; #URLエンコーディングのライブラリ # 1.cgiをパースしパラメータを取得 my $q = CGI->new; my $keyword = $q->param('keyword'); my $start = $q->param('start') || 1; my $count = $q->param('count') || 10; # 2.パラメータを付与して、WEbサービスを呼び出す。 my $api = URI->new('http://webservice.recruit.co.jp/hotpepper/gourmet/v1'); $api->query_param(food => 'R040'); $api->query_param(keyword => $keyword); $api->query_param(start => $start) ; $api->query_param(count => $count) ; $api->query_param(format => 'json'); $api->query_param(key => '8a5581681bd42ba6'); # <- apiキーをご自身のキーと置き換えてご利用ください! my $res= undef; my $error = ''; my $ua = LWP::UserAgent->new; $ua->timeout(10); my $response = $ua->get($api); if ($response->is_success) { $res = JSON::Syck::Load($response->content); # or whatever }else { $error = $response->status_line; } # 3.戻り値を使って、htmlを組み立てる。 print $q->header('-charset' => 'utf-8'); if ( $error ) { print <<"ERR_HTML"; エラー

エラーが発生しました

$error

ERR_HTML }else{ print <<"HTML"; 例えば、こんなことも。→焼肉屋さんを $keyword で検索

ザ・焼き肉検索

「飲み放題」とか「新橋」とか「個室」とか
そういうキーワードを入れよ。

HTML my $sid = '2579400'; my $pid = '878329781'; print qq(

); if ($res->{results}{results_start} > 1 ){ print qq( <前 ); } print "$res->{results}{results_available}件中 $res->{results}{results_start}件目から $res->{results}{results_returned}件表示"; if ($res->{results}{results_available} > $res->{results}{results_start}+$res->{results}{results_returned} ){ print qq( 次>); } print "

\n"; foreach my $shop (@{$res->{results}{shop}}){ print qq(
\n); print qq(\n); print qq(
$shop->{catch}

\n); print qq(\n); my $url = uri_escape( $shop->{urls}{pc} ); #API側のURLエンコーディングを行います。 print qq(\n); print "
\n"; } print <<"HTML_2"; ホットペッパー Webサービス
HTML_2 } 1;