アマゾンのWebサービスを利用するPerlのNet::Amazonモジュールを利用するPerlでは、数々の便利なモジュールが利用できますが、今回はNet::Amazonというモジュールを利用します。Net::Amazonでは、各種の検索リクエストの送信、レスポンスの解析が簡単に行えるので、プログラムの作成は非常にシンプルになります。 プログラムサンプルここで紹介するサンプルは、Net::Amazonのソースコードと共に提供されているサンプルの「browse」というBrowseNodeサーチを行うプログラムをCGIに書き直したものです。また、localeパラメータをjpにして、リクエストが日本のアマゾンドットコムに向かうようにしています。 まず、実際に実行してみます。次の例は、和書の「文学・評論」カテゴリを検索します。 次にソースコードです。
#!/usr/bin/perl
######################################################
# Browse node search
# Jackie Hamilton <kira@cgi101.com>, 2003
# Mike Schilli <na@perlmeister.com>, 2003
# Norihiko Nakajima <n-nakajima@apricot.co.jp>, 2004
######################################################
use warnings;
use strict;
use Net::Amazon;
use CGI;
my $q = new CGI;
my $params = $q->Vars();
my $mode = $params->{'mode'};
my $node = $params->{'node'};
if ($mode eq "" or $node eq "") { error("param error"); }
my $ua = Net::Amazon->new(
token => 'D14X1ERKGLFMNO', # Developer Token
locale => 'jp', # 日本のアマゾンドットコムへのリクエストであることを指示
);
#アマゾンドットコムへの検索リクエスト送信とレスポンスの受信をここで行います。
my $resp = $ua->search(
browsenode => $node,
mode => $mode,
);
error($resp->message()) unless $resp->is_success();
print $q->header(-charset=>'utf-8');
binmode(STDOUT, ":utf8"); # PerlIOレイヤで wide char 関連のエラー回避
#結果の表示
for ($resp->properties) {
print $_->Asin(), " ",
$_->title(), " ",
$_->OurPrice(), "<br>\n";
}
print $q->end_html();
exit;
sub error
{
print $q->header(-charset=>'utf-8');
print $q->h1('ERROR');
print "$_[0]\n";
print $q->end_html();
exit;
}
このように、便利なモジュールのおかげで実に簡単にAWSが利用できます。 |

