Net::Amazonだと簡単

ActivePerl + Net::Amazon モジュールでサンプルプログラムを作ってみました。

use strict;
use Net::Amazon;
use encoding "cp932";

my $amazon = Net::Amazon->new(
	token => '自分のSubscription ID',
	locale => 'jp',
);

my $asin = ['4101327181'];
my $res = $amazon->search(asin => $asin);

unless ($res->is_success()) {
	print $res->message(), "\n";
	exit;
}

foreach my $item ($res->properties) {
	print "Asin: ", $item->Asin, "\n";
	print "ProductName: ", $item->ProductName, "\n";
	print "Availability: ", $item->Availability, "\n";
	print "Catalog: ", $item->Catalog, "\n";
	print "Authors: ", join(', ', $item->authors), "\n" if $item->can('authors');
	print "ReleaseDate: ", $item->ReleaseDate, "\n";
	print "Manufacturer: ", $item->Manufacturer, "\n";
	print "ImageUrlMedium: ", $item->ImageUrlMedium, "\n";
	print "OurPrice: ", $item->OurPrice, "\n";
	print "Media: ", $item->Media, "\n";
	my $review = $item->review_set;
	if ($review->total_reviews) {
		print "\n";
		print "AverageCustomerRating: ", $review->average_customer_rating, "\n";
		foreach my $rev ($review->reviews) {
			print "Rating: ", $rev->rating, "\n";
			print "Summary: ", $rev->summary, "\n";
			print "Comment: ", $rev->comment, "\n";
		}
	}
	print "\n";
}

DelphiからSOAPで情報を取得するのも簡単だったのですが、それ以上に簡単です。

難点はNet::AmazonのインストールがppmではできなくてCPANモジュールを使わないといけないところ。ActivePerlでCPANモジュールを使うためにはあらかじめnmakeを入れておかないといけないんですよね。