r2201 - in packages: . libnet-amazon-perl libnet-amazon-perl/branches libnet-amazon-perl/branches/upstream libnet-amazon-perl/branches/upstream/current libnet-amazon-perl/branches/upstream/current/adm libnet-amazon-perl/branches/upstream/current/eg libnet-amazon-perl/branches/upstream/current/lib libnet-amazon-perl/branches/upstream/current/lib/Net libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Attribute libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Property libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Result libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Result/Seller libnet-amazon-perl/branches/upstream/current/t libnet-amazon-perl/branches/upstream/current/t/canned

gregor herrmann gregoa-guest at costa.debian.org
Sat Feb 25 20:45:56 UTC 2006


Author: gregoa-guest
Date: 2006-02-25 20:45:24 +0000 (Sat, 25 Feb 2006)
New Revision: 2201

Added:
   packages/libnet-amazon-perl/
   packages/libnet-amazon-perl/branches/
   packages/libnet-amazon-perl/branches/upstream/
   packages/libnet-amazon-perl/branches/upstream/current/
   packages/libnet-amazon-perl/branches/upstream/current/Changes
   packages/libnet-amazon-perl/branches/upstream/current/MANIFEST
   packages/libnet-amazon-perl/branches/upstream/current/MANIFEST.SKIP
   packages/libnet-amazon-perl/branches/upstream/current/META.yml
   packages/libnet-amazon-perl/branches/upstream/current/Makefile.PL
   packages/libnet-amazon-perl/branches/upstream/current/README
   packages/libnet-amazon-perl/branches/upstream/current/adm/
   packages/libnet-amazon-perl/branches/upstream/current/adm/podok
   packages/libnet-amazon-perl/branches/upstream/current/eg/
   packages/libnet-amazon-perl/branches/upstream/current/eg/artist
   packages/libnet-amazon-perl/branches/upstream/current/eg/asin
   packages/libnet-amazon-perl/branches/upstream/current/eg/asin-de
   packages/libnet-amazon-perl/branches/upstream/current/eg/asin_cache
   packages/libnet-amazon-perl/branches/upstream/current/eg/asin_dvd
   packages/libnet-amazon-perl/branches/upstream/current/eg/asin_fetch
   packages/libnet-amazon-perl/branches/upstream/current/eg/asin_img
   packages/libnet-amazon-perl/branches/upstream/current/eg/asin_mult
   packages/libnet-amazon-perl/branches/upstream/current/eg/asin_offerall
   packages/libnet-amazon-perl/branches/upstream/current/eg/blended.pl
   packages/libnet-amazon-perl/branches/upstream/current/eg/browse
   packages/libnet-amazon-perl/branches/upstream/current/eg/cd_fetch
   packages/libnet-amazon-perl/branches/upstream/current/eg/cheapo
   packages/libnet-amazon-perl/branches/upstream/current/eg/dejazz
   packages/libnet-amazon-perl/branches/upstream/current/eg/exchange
   packages/libnet-amazon-perl/branches/upstream/current/eg/heavy
   packages/libnet-amazon-perl/branches/upstream/current/eg/keyword
   packages/libnet-amazon-perl/branches/upstream/current/eg/manufacturer
   packages/libnet-amazon-perl/branches/upstream/current/eg/maxauthors
   packages/libnet-amazon-perl/branches/upstream/current/eg/power
   packages/libnet-amazon-perl/branches/upstream/current/eg/rate_limit
   packages/libnet-amazon-perl/branches/upstream/current/eg/reviews
   packages/libnet-amazon-perl/branches/upstream/current/eg/seller
   packages/libnet-amazon-perl/branches/upstream/current/eg/sim
   packages/libnet-amazon-perl/branches/upstream/current/eg/similar
   packages/libnet-amazon-perl/branches/upstream/current/eg/similar2
   packages/libnet-amazon-perl/branches/upstream/current/eg/textstream
   packages/libnet-amazon-perl/branches/upstream/current/eg/upc
   packages/libnet-amazon-perl/branches/upstream/current/eg/wishlist
   packages/libnet-amazon-perl/branches/upstream/current/lib/
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon.pm
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Attribute/
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Attribute/Review.pm
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Attribute/ReviewSet.pm
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Property.pm
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Property/
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Property/Book.pm
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Property/DVD.pm
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Property/Music.pm
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request.pm
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/ASIN.pm
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/Artist.pm
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/Blended.pm
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/BrowseNode.pm
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/Exchange.pm
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/Keyword.pm
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/Manufacturer.pm
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/Power.pm
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/Seller.pm
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/Similar.pm
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/Sort.pm
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/TextStream.pm
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/UPC.pm
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/Wishlist.pm
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response.pm
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/ASIN.pm
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/Artist.pm
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/Blended.pm
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/BrowseNode.pm
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/Exchange.pm
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/Keyword.pm
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/Manufacturer.pm
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/Power.pm
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/Seller.pm
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/Similar.pm
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/TextStream.pm
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/UPC.pm
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/Wishlist.pm
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Result/
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Result/Seller.pm
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Result/Seller/
   packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Result/Seller/Listing.pm
   packages/libnet-amazon-perl/branches/upstream/current/t/
   packages/libnet-amazon-perl/branches/upstream/current/t/001ASIN.t
   packages/libnet-amazon-perl/branches/upstream/current/t/002Wishlist.t
   packages/libnet-amazon-perl/branches/upstream/current/t/003UPC.t
   packages/libnet-amazon-perl/branches/upstream/current/t/004Reviews.t
   packages/libnet-amazon-perl/branches/upstream/current/t/005Power.t
   packages/libnet-amazon-perl/branches/upstream/current/t/006Browse.t
   packages/libnet-amazon-perl/branches/upstream/current/t/007Manufacturer.t
   packages/libnet-amazon-perl/branches/upstream/current/t/008Textstream.t
   packages/libnet-amazon-perl/branches/upstream/current/t/009Blended.t
   packages/libnet-amazon-perl/branches/upstream/current/t/010Artist.t
   packages/libnet-amazon-perl/branches/upstream/current/t/011Locale.t
   packages/libnet-amazon-perl/branches/upstream/current/t/012Keyword.t
   packages/libnet-amazon-perl/branches/upstream/current/t/013Seller.t
   packages/libnet-amazon-perl/branches/upstream/current/t/014Constructors.t
   packages/libnet-amazon-perl/branches/upstream/current/t/015Exchange.t
   packages/libnet-amazon-perl/branches/upstream/current/t/canned/
   packages/libnet-amazon-perl/branches/upstream/current/t/canned/artist.xml
   packages/libnet-amazon-perl/branches/upstream/current/t/canned/asin_cd.xml
   packages/libnet-amazon-perl/branches/upstream/current/t/canned/asin_cdm.xml
   packages/libnet-amazon-perl/branches/upstream/current/t/canned/asin_err.xml
   packages/libnet-amazon-perl/branches/upstream/current/t/canned/asin_mua.xml
   packages/libnet-amazon-perl/branches/upstream/current/t/canned/asin_pp.xml
   packages/libnet-amazon-perl/branches/upstream/current/t/canned/blended1.xml
   packages/libnet-amazon-perl/branches/upstream/current/t/canned/blendedm.xml
   packages/libnet-amazon-perl/branches/upstream/current/t/canned/browse.xml
   packages/libnet-amazon-perl/branches/upstream/current/t/canned/dvd.xml
   packages/libnet-amazon-perl/branches/upstream/current/t/canned/exchange.xml
   packages/libnet-amazon-perl/branches/upstream/current/t/canned/keyword.xml
   packages/libnet-amazon-perl/branches/upstream/current/t/canned/locale.xml
   packages/libnet-amazon-perl/branches/upstream/current/t/canned/manufacturer.xml
   packages/libnet-amazon-perl/branches/upstream/current/t/canned/power.xml
   packages/libnet-amazon-perl/branches/upstream/current/t/canned/power_empty.xml
   packages/libnet-amazon-perl/branches/upstream/current/t/canned/power_sorted.xml
   packages/libnet-amazon-perl/branches/upstream/current/t/canned/reviews.xml
   packages/libnet-amazon-perl/branches/upstream/current/t/canned/seller.xml
   packages/libnet-amazon-perl/branches/upstream/current/t/canned/textstream.xml
   packages/libnet-amazon-perl/branches/upstream/current/t/canned/upc_zwan.xml
   packages/libnet-amazon-perl/branches/upstream/current/t/canned/wishlist1.xml
   packages/libnet-amazon-perl/branches/upstream/current/t/canned/wishlist10_1.xml
   packages/libnet-amazon-perl/branches/upstream/current/t/canned/wishlist10_2.xml
   packages/libnet-amazon-perl/branches/upstream/current/t/init.pl
   packages/libnet-amazon-perl/tags/
Log:
[svn-inject] Installing original source of libnet-amazon-perl

Added: packages/libnet-amazon-perl/branches/upstream/current/Changes
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/Changes	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/Changes	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,249 @@
+Revision history for Perl extension Net::Amazon:
+
+0.34 (07/11/2005)
+   (ms) Added similar_asins() to Net::Amazon::Property
+   (ms) Steven Alyari reported a caching problem on v5.8.1-RC3/darwin,
+        where perl's hashes are stored differently between invocations
+        of the same program, confusing Net::Amazon's URL-based caching
+        algorithm. Applied his fix, which sorts the query arguments.
+
+0.33 (02/23/2005)
+   (ms) Makefile.PL prerequisite changed from undef to '0'.
+   (ms) Greg McCann <greg at cambria.com> added ThirdPartyProductInfo.
+   (ms) Added Exchange requests with help by Greg McCann <greg at cambria.com>.
+
+0.32 (10/16/2004)
+   (ms) Greg McCann <greg at cambria.com> added CollectiblePrice, 
+        CollectibleCount, NumberOfOfferings, UsedCount, ThirdPartyNewPrice,
+        ThirdPartyNewCount as default properties. To get (*Count, 
+        NumberOfOfferings), specify "offer" => "All" in the request.
+
+0.31 (09/22/2004)
+   (ms) Lance P Cleveland <lance at lancecleveland.com> noticed that somewhere
+        between 0.26 and 0.30 the properties() method lost the ability to 
+        be called in scalar context and return only the first result. Added
+        logic to re-enable it.
+
+0.30 (09/14/2004)
+   (ms) Lance Cleveland <lancec at proactivewm.com> provided a patch to
+        fix a typo which caused N::A::Request::Similar to fail. Added more
+        documentation on request classes and test cases for all constructors.
+
+0.29 (08/12/2004)
+   (ms) Brian <brianbrian at gmail.com> contributed code for querying sellers.
+        Added docs and test cases. Added a new hierarchy N::A::Result/*
+        to deal with responses containing results which aren't Amazon items.
+   (ms) fixed bug in _convert_option: Override target option only if
+        it doesn't exist already.
+
+0.28 (08/04/2004)
+   (ms) ASIN search can now process several asin numbers with one request.
+        Dan Kreft <dan at kreft.net> cleaned up the implementation of 
+        Request.pm, ASIN.pm and a bunch of other files.
+   (ms) Tatsuhiko Miyagawa <miyagawa at livedoor.jp> provided a patch for
+        load errors on search(blended => ...), a fix for a bug with
+        single/multiple ProductLine(s), and a suggestion for using
+        ForceArray which XML::Simple. Added test cases for this patch.
+   (ms) Added xml_parse() method to Net::Amazon::Response which Net::Amazon
+        now calls to parse the returned XML. This enables the response
+        class (which can override it) to creatively interpret the 
+        response XML to form the response data structure.
+   (ms) Added strict warnings to each and every module
+   (ms) Added dump_responses() for easier response canning.
+
+0.27 (07/27/2004)
+   (ms) Richard Giliam <nirosys at nirostasis.net> added the isbn()
+        method to the Book.pm property.
+   (ms) Andy Grundman <andy at hybridized.org> provided a patch to 
+        enforce Amazon's no-more-than-1-request-per-second rule. 
+        A new parameter 'strict' has been added to the Net::Amazon 
+        constructor, which will limit the number of requests if 
+        set to 1. Defaults to 1.
+
+0.26 (07/07/2004)
+   (ms) Added ProductDescription to Properties.pm
+   (ms) Applied patch by Robert Rothenberg <wlkngowl at i-2000.com> for 
+        Media and NumMedia properties.
+
+0.25 (06/19/2004)
+   (ms) Applied patch by Robert Rothenberg <wlkngowl at i-2000.com> to
+        Properties.pm that returns the browse_nodes (categories) for 
+        a result.
+   (ms) Dave Holland <dave at biff.org.uk> suggested to provide access
+        to the user agent's proxy settings. Now, proxy settings via
+        environment variables are supported (env_proxy()) as well as
+        passing Net::Amazon->new(); a prepped LWP::UserAgent instance
+        via the 'ua' parameter (see docs).
+   (ms) Accessors are no longer created in the constructors, but on the
+        package level. Thanks to tony at tmtm.com who reported this to the
+        CPAN bug tracker.
+   
+0.24 (06/10/2004)
+   (ms) Fixed test bug in 007Manufacturer.t
+   (ms) Applied patch by Steve Rushe <steve at deeden.co.uk> for book->binding()
+
+0.23 (06/06/2004)
+   (ms) Evaldas Imbrasas <evaldas at wolfram.com> suggested to add SalesRank
+        to Properties.pm -- added field and test case.
+   (ms) Added eg/dejazz, a sample program to retrieve the 10 best-selling
+        jazz CDs in Germany, as presented by an article in iX magazine.
+
+0.22 (05/09/2004)
+   (ms) fixed warnings during make test (backwards-compatible without
+        tracks())
+   (ms) Batara Kesuma <bkesuma at gaijinweb.com> sent in a patch to 
+        access TotalPages (now available as $resp->total_pages()).
+
+0.21 (03/21/2004)
+   (ms) Tatsuhiko Miyagawa <miyagawa at livedoor.jp> provided a patch to
+        adapt N:A for Amazon's change of "locale=jp" requests, which 
+        should be sent to xml.amazon.co.jp, instead of xml.amazon.com:
+        http://forums.prospero.com/n/mb/message.asp?webtag=am-assocdevxml&msg=4629.1&ctx=4096
+   (ms) added tracks() to N:A::Properties::Music to list track titles of CDs
+
+0.20 (03/08/2004)
+   (ms) rayg <rayg at varchars.com> added textstream search and support
+        for sorting results.
+   (ms) added directors(), director() and starring() to DVD.pm
+
+0.19 (02/13/2004)
+   (ms) Michael Coulter <mjc at bitz.ca> noticed that eg/review had the
+        wrong path to Review.pm.
+   (ms) Sam Smith <s at msmith.net> noticed that the dependency on
+        LWP::UserAgent was missing from the documentation.
+   (ms) Bill Fitzpatrick provided a patch implementing and testing
+        Manufacturer searches.
+
+0.18 (12/22/2003)
+   (ms) Brian Hirt <bhirt at mobygames.com> provided a patch for
+        multiple error messages returned by some requests to AMZN.
+        There's two accessors now, Response->messages() returning
+        a ref to an array of error messages, and Response->message()
+        returning them stringed together for backwards compatibility.
+   (ms) Padraic Renaghan <padraic at renaghan.com> provided a patch
+        for access to upc/media/nummedia fields in Music.pm
+   (ms) Fixed test suite warnings with perl 5.8.2 in N::A::Property::Book.
+
+0.17 (11/18/2003)
+   (ms) Robert Graff <rgraff at workingdemo.com> provided a patch for 
+        'blended' searches.
+
+0.16 (10/10/2003)
+   (ms) Replaced 'legacy call' onca/xml2 by onca/xml3, according to 
+        the AWS newsletter.
+   (ms) Martin Streicher <martin.streicher at apress.com> enhanced the
+        "power" search script (in /eg) to limit searches to page
+        ranges if so requested.
+
+0.15 (08/24/2003)
+   (ms) Martin Streicher <martin.streicher at apress.com> provided support
+        for Amazon's "Power Search". Added documentation and test case.
+   (ms) Jackie Hamilton <kira at cgi101.com> provided a patch plus
+        documentation for Browse Nodes. Added test case.
+
+0.14 (08/12/2003)
+   (ms) Mike Evron <evronm at dtcinc.net> suggested to implement caching
+        for responses. Added a Cache::File-based implementation.
+
+0.13 (08/07/2003)
+   (ms) Added customer reviews for all properties. Changed default
+        request mode to 'heavy' for that. Now all properties have a
+        review_set() method returning a
+        Net::Amazon::Attribute::ReviewSet object, which in turn offers
+        a reviews() method delivering a list of
+        Net::Amazon::Attribute::Review objects. Check the man pages
+        for details. eg/review shows an example.
+
+0.12 (07/24/2003)
+   (ms) Mike Evron <evronm at dtcinc.net> noticed that the SYNOPSIS code
+        on the main documentation page had the wrong "search" syntax 
+        -- thanks, Mike!
+   (ms) Changed all tests to process canned data, live tests turned out
+        to be too unreliable, due to Amazon's "best effort" responses.
+        If you want the test suite to process live data, you need to
+        set the environment variable NET_AMAZON_LIVE_TESTS.
+        
+0.11 (07/14/2003)
+   (ms) Added 'Similar Searches' API
+   (ms) Adapted for new amazon.de and amazon.co.uk searches
+
+0.10 (06/28/2003)
+   (ms) Adapted wishlist test case for change in AMZN's catalog
+   (ms) Added docs for new Net::Amazon homepage at net-amazon.sourceforge.net
+        and mailing list
+   (ms) Helper in place to assist XML::Simple in choosing the right parser,
+        to avoid install problems due to XML::SAX::RTF.
+
+0.09 (06/24/2003)
+   (ms) Tony Bowden <tony at kasei.com> suggested to have a $ua->search
+        method, abstracting the usage of the different request objects.
+        Implemented that.
+   (ms) Resolved warnings and strict errors in test cases
+
+0.08 (06/22/2003)
+   (ms) Changed dependencies to 5.006, XML::Simple and LWP::UserAgent
+
+0.07 (06/10/2003)
+   (ms) fixed bug with single-item-wishlists
+   (ms) Lists printed as strings now have numbered bullets
+   (ms) Tests are using new wishlist 1XL5DWOUFMFVJ (Net::Amazon)
+   (ms) Added tests with canned reponses
+
+0.06 (06/07/2003)
+   (ms) applied workaround for AMZN's wishlist bug: If a wishlist
+     is longer than 10 items, AMZN returns the first 10 items with
+     no indication if there's any followup pages. The workaround
+     just tries to fetch another batch in case there's exactly 10 and 
+     hides eventually encountered errors. 
+
+   Dan Sully <daniel at electricrain.com> provided a patch
+     to suppress a warning in case a music item isn't returning a 'year'
+     field
+
+   Barnaby Claydon <bclaydon at perseus.com> reported a couple of problems
+   with wishlists, they're fixed by the following patches:
+
+   (ms) Added new property Net::Amazon::Property::DVD
+
+   (ms) Changed as_string() of default Net::Amazon::Property (used if
+     we come across a 'Toy' or 'Video Game' category) to return
+     a more human-readable format.
+
+   (ms) Implemented retry strategy on Amazon's temporary errors, if we
+     encounter one, we'll sleep for 1 sec and then retry at most
+     twice.
+
+   (ms) Accessors have been changed to return an empty string if 
+     a value hasn't been specified in XML. Products without price and
+     other anomalies won't cause perl warnings anymore.
+
+0.05 (05/31/2003)
+   Martha Greenberg <marthag at mit.edu> provided bug reports 
+   and patches for
+       * 'music' parameter for UPC searches (fixed in doc)
+       * Net::Amazon::Property::Music now deals correctly with
+         CDs by multiple artists.
+       * missing documentation of 'locale' parameter
+
+   (ms) Net::Amazon now takes the 'locale' parameter also in
+   the main Net::Amazon object's constructor.
+
+0.04 (05/29/2003)
+   Dan Sully <daniel at electricrain.com> provided a patch
+   to check if a response indeed contains the {Details} hash.
+
+0.03 (05/06/2003)
+   (ms) properties returns empty list on failure now
+
+   Martha Greenberg <marthag at mit.edu> provided patch for 
+       * the now mandatory associates-id in the query
+       * two documentation bugs
+
+   Konstantin Gredeskoul <kig at get.topica.com> also provided an almost
+       identical patch to the problem :).
+
+0.02
+   (ms) documentation updated
+
+0.01
+   (ms) where it all started

Added: packages/libnet-amazon-perl/branches/upstream/current/MANIFEST
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/MANIFEST	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/MANIFEST	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,114 @@
+adm/podok
+Changes
+eg/artist
+eg/asin
+eg/asin-de
+eg/asin_cache
+eg/asin_dvd
+eg/asin_fetch
+eg/asin_img
+eg/asin_mult
+eg/asin_offerall
+eg/blended.pl
+eg/browse
+eg/cd_fetch
+eg/cheapo
+eg/dejazz
+eg/exchange
+eg/heavy
+eg/keyword
+eg/manufacturer
+eg/maxauthors
+eg/power
+eg/rate_limit
+eg/reviews
+eg/seller
+eg/sim
+eg/similar
+eg/similar2
+eg/textstream
+eg/upc
+eg/wishlist
+lib/Net/Amazon.pm
+lib/Net/Amazon/Attribute/Review.pm
+lib/Net/Amazon/Attribute/ReviewSet.pm
+lib/Net/Amazon/Property.pm
+lib/Net/Amazon/Property/Book.pm
+lib/Net/Amazon/Property/DVD.pm
+lib/Net/Amazon/Property/Music.pm
+lib/Net/Amazon/Request.pm
+lib/Net/Amazon/Request/Artist.pm
+lib/Net/Amazon/Request/ASIN.pm
+lib/Net/Amazon/Request/Blended.pm
+lib/Net/Amazon/Request/BrowseNode.pm
+lib/Net/Amazon/Request/Exchange.pm
+lib/Net/Amazon/Request/Keyword.pm
+lib/Net/Amazon/Request/Manufacturer.pm
+lib/Net/Amazon/Request/Power.pm
+lib/Net/Amazon/Request/Seller.pm
+lib/Net/Amazon/Request/Similar.pm
+lib/Net/Amazon/Request/Sort.pm
+lib/Net/Amazon/Request/TextStream.pm
+lib/Net/Amazon/Request/UPC.pm
+lib/Net/Amazon/Request/Wishlist.pm
+lib/Net/Amazon/Response.pm
+lib/Net/Amazon/Response/Artist.pm
+lib/Net/Amazon/Response/ASIN.pm
+lib/Net/Amazon/Response/Blended.pm
+lib/Net/Amazon/Response/BrowseNode.pm
+lib/Net/Amazon/Response/Exchange.pm
+lib/Net/Amazon/Response/Keyword.pm
+lib/Net/Amazon/Response/Manufacturer.pm
+lib/Net/Amazon/Response/Power.pm
+lib/Net/Amazon/Response/Seller.pm
+lib/Net/Amazon/Response/Similar.pm
+lib/Net/Amazon/Response/TextStream.pm
+lib/Net/Amazon/Response/UPC.pm
+lib/Net/Amazon/Response/Wishlist.pm
+lib/Net/Amazon/Result/Seller.pm
+lib/Net/Amazon/Result/Seller/Listing.pm
+Makefile.PL
+MANIFEST			This list of files
+MANIFEST.SKIP
+META.yml
+README
+t/001ASIN.t
+t/002Wishlist.t
+t/003UPC.t
+t/004Reviews.t
+t/005Power.t
+t/006Browse.t
+t/007Manufacturer.t
+t/008Textstream.t
+t/009Blended.t
+t/010Artist.t
+t/011Locale.t
+t/012Keyword.t
+t/013Seller.t
+t/014Constructors.t
+t/015Exchange.t
+t/canned/artist.xml
+t/canned/asin_cd.xml
+t/canned/asin_cdm.xml
+t/canned/asin_err.xml
+t/canned/asin_mua.xml
+t/canned/asin_pp.xml
+t/canned/blended1.xml
+t/canned/blendedm.xml
+t/canned/browse.xml
+t/canned/dvd.xml
+t/canned/exchange.xml
+t/canned/keyword.xml
+t/canned/locale.xml
+t/canned/manufacturer.xml
+t/canned/power.xml
+t/canned/power_empty.xml
+t/canned/power_sorted.xml
+t/canned/reviews.xml
+t/canned/seller.xml
+t/canned/textstream.xml
+t/canned/upc_zwan.xml
+t/canned/wishlist1.xml
+t/canned/wishlist10_1.xml
+t/canned/wishlist10_2.xml
+t/init.pl

Added: packages/libnet-amazon-perl/branches/upstream/current/MANIFEST.SKIP
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/MANIFEST.SKIP	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/MANIFEST.SKIP	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,10 @@
+blib
+^Makefile$
+^Makefile.old$
+CVS
+.cvsignore
+docs
+MANIFEST.bak
+adm/release
+adm/sourceforge
+adm/sfupd

Added: packages/libnet-amazon-perl/branches/upstream/current/META.yml
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/META.yml	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/META.yml	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,16 @@
+# http://module-build.sourceforge.net/META-spec.html
+#XXXXXXX This is a prototype!!!  It will change in the future!!! XXXXX#
+name:         Net-Amazon
+version:      0.34
+version_from: lib/Net/Amazon.pm
+installdirs:  site
+requires:
+    Data::Dumper:                  0
+    Log::Log4perl:                 0.3
+    LWP::UserAgent:                2
+    Time::HiRes:                   1
+    URI:                           0
+    XML::Simple:                   2.08
+
+distribution_type: module
+generated_by: ExtUtils::MakeMaker version 6.17

Added: packages/libnet-amazon-perl/branches/upstream/current/Makefile.PL
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/Makefile.PL	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/Makefile.PL	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,18 @@
+use 5.006;
+use ExtUtils::MakeMaker;
+# See lib/ExtUtils/MakeMaker.pm for details of how to influence
+# the contents of the Makefile that is written.
+WriteMakefile(
+    'NAME'		=> 'Net::Amazon',
+    'VERSION_FROM'	=> 'lib/Net/Amazon.pm', # finds $VERSION
+    'PREREQ_PM'		=> { Log::Log4perl  => 0.30,
+                             XML::Simple    => 2.08,
+                             LWP::UserAgent => 2,
+                             Time::HiRes    => 1,
+                             Data::Dumper   => 0,
+                             URI            => 0,
+                           }, # e.g., Module::Name => 1.1
+    ($] >= 5.005 ?    ## Add these new keywords supported since 5.005
+      (ABSTRACT_FROM => 'lib/Net/Amazon.pm', # retrieve abstract from module
+       AUTHOR     => 'Mike <m at perlmeister.com>') : ()),
+);

Added: packages/libnet-amazon-perl/branches/upstream/current/README
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/README	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/README	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,653 @@
+######################################################################
+    Net::Amazon 0.34
+######################################################################
+
+NAME
+    Net::Amazon - Framework for accessing amazon.com via SOAP and XML/HTTP
+
+SYNOPSIS
+      use Net::Amazon;
+
+      my $ua = Net::Amazon->new(token => 'YOUR_AMZN_TOKEN');
+
+        # Get a request object
+      my $response = $ua->search(asin => '0201360683');
+
+      if($response->is_success()) {
+          print $response->as_string(), "\n";
+      } else {
+          print "Error: ", $response->message(), "\n";
+      }
+
+ABSTRACT
+      Net::Amazon provides an object-oriented interface to amazon.com's
+      SOAP and XML/HTTP interfaces. This way it's possible to create applications
+      using Amazon's vast amount of data via a functional interface, without
+      having to worry about the underlying communication mechanism.
+
+DESCRIPTION
+    "Net::Amazon" works very much like "LWP": First you define a useragent
+    like
+
+      my $ua = Net::Amazon->new(
+          token     => 'YOUR_AMZN_TOKEN',
+          max_pages => 3,
+      );
+
+    which you pass your personal amazon developer's token (can be obtained
+    from <http://amazon.com/soap>) and (optionally) the maximum number of
+    result pages the agent is going to request from Amazon in case all
+    results don't fit on a single page (typically holding 20 items). Note
+    that each new page requires a minimum delay of 1 second to comply with
+    Amazon's one-query-per-second policy.
+
+    According to the different search methods on Amazon, there's a bunch of
+    different request types in "Net::Amazon". The user agent's convenience
+    method "search()" triggers different request objects, depending on which
+    parameters you pass to it:
+
+    "$ua->search(asin => "0201360683")"
+        The "asin" parameter has Net::Amazon search for an item with the
+        specified ASIN. If the specified value is an arrayref instead of a
+        single scalar, like in
+
+            $ua->search(asin => ["0201360683", "0596005083"]) 
+
+        then a search for multiple ASINs is performed, returning a list of
+        results.
+
+    "$ua->search(artist => "Rolling Stones")"
+        The "artist" parameter has the user agent search for items created
+        by the specified artist. Can return many results.
+
+    "$ua->search(browsenode=>"4025", mode=>"books" [, keywords=>"perl"])"
+        Returns a list of items by category ID (node). For example node
+        "4025" is the CGI books category. You can add a keywords parameter
+        to filter the results by that keyword.
+
+    "$ua->search(exchange => 'Y04Y3424291Y2398445')"
+        Returns an item offered by a third-party seller. The item is
+        referenced by the so-called *exchange ID*.
+
+    "$ua->search(keyword => "perl xml", mode => "books")"
+        Search by keyword, mandatory parameters "keyword" and "mode". Can
+        return many results.
+
+    "$ua->search(wishlist => "1XL5DWOUFMFVJ")"
+        Search for all items in a specified wishlist. Can return many
+        results.
+
+    "$ua->search(upc => "075596278324", mode => "music")"
+        Music search by UPC (product barcode), mandatory parameter "upc".
+        "mode" has to be set to "music". Returns at most one result.
+
+    "$ua->search(similar => "0201360683")"
+        Search for all items similar to the one represented by the ASIN
+        provided. Can return many results.
+
+    "$ua->search(power => "subject: perl and author: schwartz", mode =>
+    "books")"
+        Initiate a power search for all books matching the power query. Can
+        return many results. See Net::Amazon::Request::Power for details.
+
+    "$ua->search(manufacturer => "o'reilly", mode => "books")"
+        Initiate a search for all items made by a given manufacturrer. Can
+        return many results. See Net::Amazon::Request::Manufacturer for
+        details.
+
+    "$ua->search(blended => "Perl")"
+        Initiate a search for items in all categories.
+
+    "$ua->search(seller => "A2GXAGU54VOP7")"
+        Start a search on items sold by a specific third-party seller,
+        referenced by its ID (not seller name).
+
+    "$ua->search(textstream => "Blah blah Rolling Stones blah blah")"
+        Find items related to keywords within a text stream.
+
+    The user agent's "search" method returns a response object, which can be
+    checked for success or failure:
+
+      if($resp->is_success()) {
+          print $resp->as_string();
+      } else {
+          print "Error: ", $resp->message(), "\n";
+      }
+
+    In case the request for an item search succeeds, the response contains
+    one or more Amazon 'properties', as it calls the products found. All
+    matches can be retrieved from the Response object using it's
+    "properties()" method.
+
+    In case the request fails, the response contains one or more error
+    messages. The response object's "message()" method will return it (or
+    them) as a single string, while "messages()" (notice the plural) will
+    return a reference to an array of message strings.
+
+    Response objects always have the methods "is_success()", "is_error()",
+    "message()", "total_results()", "as_string()" and "properties()"
+    available.
+
+    "total_results()" returns the total number of results the search
+    yielded. "properties()" returns one or more "Net::Amazon::Property"
+    objects of type "Net::Amazon::Property" (or one of its subclasses like
+    "Net::Amazon::Property::Book", "Net::Amazon::Property::Music" or
+    Net::Amazon::Property::DVD), each of which features accessors named
+    after the attributes of the product found in Amazon's database:
+
+        for ($resp->properties) {
+           print $_->Asin(), " ",
+                 $_->OurPrice(), "\n";
+        }
+
+    In scalar context, "properties()" just returns the *first*
+    "Net::Amazon::Property" object found. Commonly available accessors to
+    "Net::Amazon::Property" objects are "OurPrice()", "ImageUrlLarge()",
+    "ImageUrlMedium()", "ImageUrlSmall()", "ReleaseDate()", "Catalog()",
+    "Asin()", "url()", "Manufacturer()", "UsedPrice()", "ListPrice()",
+    "ProductName()", "Availability()", "SalesRank()", "CollectiblePrice()",
+    "CollectibleCount()", "NumberOfOfferings()", "UsedCount()",
+    "ThirdPartyNewPrice()", "ThirdPartyNewCount()", "similar_asins()". For
+    details, check Net::Amazon::Property.
+
+    Also, the specialized classes "Net::Amazon::Property::Book" and
+    "Net::Amazon::Property::Music" feature convenience methods like
+    "authors()" (returning the list of authors of a book) or "album()" for
+    CDs, returning the album title.
+
+    Customer reviews: Every property features a "review_set()" method which
+    returns a "Net::Amazon::Attribute::ReviewSet" object, which in turn
+    offers a list of "Net::Amazon::Attribute::Review" objects. Check the
+    respective man pages for details on what's available.
+
+  Requests behind the scenes
+    "Net::Amazon"'s "search()" method is just a convenient way to create
+    different kinds of request objects behind the scenes and trigger them to
+    send requests to Amazon.
+
+    Depending on the parameters fed to the "search" method, "Net::Amazon"
+    will determine the kind of search requested and create one of the
+    following request objects:
+
+    Net::Amazon::Request::ASIN
+        Search by ASIN, mandatory parameter "asin". Returns at most one
+        result.
+
+    Net::Amazon::Request::Artist
+        Music search by Artist, mandatory parameter "artist". Can return
+        many results.
+
+    Net::Amazon::Request::BrowseNode
+        Returns category (node) listing. Mandatory parameters "browsenode"
+        (must be numeric) and "mode". Can return many results.
+
+    Net::Amazon::Request::Keyword
+        Keyword search, mandatory parameters "keyword" and "mode". Can
+        return many results.
+
+    Net::Amazon::Request::UPC
+        Music search by UPC (product barcode), mandatory parameter "upc".
+        "mode" has to be set to "music". Returns at most one result.
+
+    Net::Amazon::Request::Blended
+        'Blended' search on a keyword, resulting in matches across the
+        board. No 'mode' parameter is allowed. According to Amazon's
+        developer's kit, this will result in up to three matches per
+        category and can yield a total of 45 matches.
+
+    Net::Amazon::Request::Power
+        Understands power search strings. See Net::Amazon::Request::Power
+        for details. Mandatory parameter "power".
+
+    Net::Amazon::Request::Manufacturer
+        Searches for all items made by a given manufacturer. Mandatory
+        parameter "manufacturer".
+
+    Net::Amazon::Request::Similar
+        Finds items similar to a given one.
+
+    Net::Amazon::Request::Wishlist
+        Find item on someone's wish list.
+
+    Net::Amazon::Request::Seller
+        Searches for a third-party seller on Amazon by seller ID. This
+        search is different than the previous ones, since it doesn't return
+        Amazon items, but a single seller record. Don't use the
+        "properties()" method on the response, use "result()" instead, which
+        returns a Net::Amazon::Result::Seller object. Check the manpage for
+        details.
+
+    Net::Amazon::Request::Exchange
+        Searches for items offered by third-party sellers. Items are
+        referenced by their so-called *Exchange ID*. Similar to
+        Net::Amazon::Request::Seller, this request doesn't return a list of
+        Amazon properties, so please use "result()" instead, which will
+        return a *single* Net::Amazon::Result::Seller::Listing item. Check
+        the manpage for details on what attributes are available there.
+
+    Check the respective man pages for details on these request objects.
+    Request objects are typically created like this (with a Keyword query as
+    an example):
+
+        my $req = Net::Amazon::Request::Keyword->new(
+            keyword   => 'perl',
+            mode      => 'books',
+        );
+
+    and are handed over to the user agent like that:
+
+        # Response is of type Net::Amazon::Response::ASIN
+      my $resp = $ua->request($req);
+
+    The convenient "search()" method just does these two steps in one.
+
+  METHODS
+    $ua = Net::Amazon->new(token => $token, ...)
+        Create a new Net::Amazon useragent. $token is the value of the
+        mandatory Amazon developer's token, which can be obtained from
+        <http://amazon.com/soap>.
+
+        Additional optional parameters:
+
+        "max_pages => $max_pages"
+            Sets how many result pages the module is supposed to fetch back
+            from Amazon, which only sends back 10 results per page. Since
+            each page requires a new query to Amazon, at most one query per
+            second will be made in "strict" mode to comply with Amazon's
+            terms of service. This will impact performance if you perform a
+            search returning many pages of results.
+
+        "affiliate_id => $affiliate_id"
+            your Amazon affiliate ID, if you have one. It defaults to
+            "webservices-20" which is currently (as of 06/2003) required by
+            Amazon.
+
+        "strict => 1"
+            Makes sure that "Net::Amazon" complies with Amazon's terms of
+            service by limiting the number of outgoing requests to 1 per
+            second. Defaults to 1, enabling rate limiting as defined via
+            "rate_limit".
+
+        "rate_limit => $reqs_per_sec"
+            Sets the rate limit to $reqs_per_sec requests per second if rate
+            limiting has been enabled with "strict" (see above). Defaults to
+            1, limiting the number of outgoing requests to 1 per second.
+
+        "$resp = $ua->request($request)"
+            Sends a request to the Amazon web service. $request is of a
+            "Net::Amazon::Request::*" type and $response will be of the
+            corresponding "Net::Amazon::Response::*" type.
+
+  Accessing foreign Amazon Catalogs
+        As of this writing (07/2003), Amazon also offers its web service for
+        the UK, Germany, and Japan. Just pass in
+
+            locale => 'uk'
+            locale => 'de'
+            locale => 'jp'
+
+        respectively to "Net::Amazon"'s constructor "new()" and instead of
+        returning results sent by the US mothership, it will query the
+        particular country's catalog and show prices in (gack!) local
+        currencies.
+
+  EXAMPLE
+        Here's a full-fledged example doing a artist search:
+
+            use Net::Amazon;
+            use Net::Amazon::Request::Artist;
+            use Data::Dumper;
+
+            die "usage: $0 artist\n(use Zwan as an example)\n"
+                unless defined $ARGV[0];
+
+            my $ua = Net::Amazon->new(
+                token       => 'YOUR_AMZN_TOKEN',
+            );
+
+            my $req = Net::Amazon::Request::Artist->new(
+                artist  => $ARGV[0],
+            );
+
+               # Response is of type Net::Amazon::Artist::Response
+            my $resp = $ua->request($req);
+
+            if($resp->is_success()) {
+                print $resp->as_string, "\n";
+            } else {
+                print $resp->message(), "\n";
+            }
+
+        And here's one displaying someone's wishlist:
+
+            use Net::Amazon;
+            use Net::Amazon::Request::Wishlist;
+
+            die "usage: $0 wishlist_id\n" .
+                "(use 1XL5DWOUFMFVJ as an example)\n" unless $ARGV[0];
+
+            my $ua = Net::Amazon->new(
+                token       => 'YOUR_AMZN_TOKEN',
+            );
+
+            my $req = Net::Amazon::Request::Wishlist->new(
+                id  => $ARGV[0]
+            );
+
+               # Response is of type Net::Amazon::ASIN::Response
+            my $resp = $ua->request($req);
+
+            if($resp->is_success()) {
+                print $resp->as_string, "\n";
+            } else {
+                print $resp->message(), "\n";
+            }
+
+CACHING
+        Responses returned by Amazon's web service can be cached locally.
+        "Net::Amazon"'s "new" method accepts a reference to a "Cache"
+        object. "Cache" (or one of its companions like "Cache::Memory",
+        "Cache::File", etc.) can be downloaded from CPAN, please check their
+        documentation for details. In fact, any other type of cache
+        implementation will do as well, see the requirements below.
+
+        Here's an example utilizing a file cache which causes "Net::Amazon"
+        to cache responses for 30 minutes:
+
+            use Cache::File;
+
+            my $cache = Cache::File->new( 
+                cache_root        => '/tmp/mycache',
+                default_expires   => '30 min',
+            );
+
+            my $ua = Net::Amazon->new(
+                token       => 'YOUR_AMZN_TOKEN',
+                cache       => $cache,
+            );
+
+        "Net::Amazon" uses *positive* caching only, errors won't be cached.
+        Erroneous requests will be sent to Amazon every time. Positive cache
+        entries are keyed by the full URL used internally by requests
+        submitted to Amazon.
+
+        Caching isn't limited to the "Cache" class. Any cache object which
+        adheres to the following interface can be used:
+
+                # Set a cache value
+            $cache->set($key, $value);
+
+                # Return a cached value, 'undef' if it doesn't exist
+            $cache->get($key);
+
+PROXY SETTINGS
+        "Net::Amazon" uses "LWP::UserAgent" under the hood to send web
+        requests to Amazon's web site. If you're in an environment where all
+        Web traffic goes through a proxy, there's two ways to configure
+        that.
+
+        First, "Net::Amazon" picks up proxy settings from environment
+        variables:
+
+            export http_proxy=http://proxy.my.place:8080
+
+        in the surrounding shell or setting
+
+            $ENV{http_proxy} = "http://proxy.my.place:8080";
+
+        in your Perl script will route all requests through the specified
+        proxy.
+
+        Secondly, you can pass a user agent instance to Net::Amazon's
+        constructor:
+
+            use Net::Amazon;
+            use LWP::UserAgent;
+
+            my $ua = LWP::UserAgent->new();
+            my $na = Net::Amazon->new(ua => $ua, token => 'YOUR_AMZN_TOKEN');
+            # ...
+
+        This way, you can configure $ua up front before Net::Amazon will use
+        it.
+
+DEBUGGING
+        If something's going wrong and you want more verbosity, just bump up
+        "Net::Amazon"'s logging level. "Net::Amazon" comes with
+        "Log::Log4perl" statements embedded, which are disabled by default.
+        However, if you initialize "Log::Log4perl", e.g. like
+
+            use Net::Amazon;
+            use Log::Log4perl qw(:easy);
+
+            Log::Log4perl->easy_init($DEBUG);
+            my Net::Amazon->new();
+            # ...
+
+        you'll see what's going on behind the scenes, what URLs the module
+        is requesting from Amazon and so forth. Log::Log4perl allows all
+        kinds of fancy stuff, like writing to a file or enabling verbosity
+        in certain parts only -- check http://log4perl.sourceforge.net for
+        details.
+
+LIVE TESTING
+        Results returned by Amazon can be incomplete or simply wrong at
+        times, due to their "best effort" design of the service. This is why
+        the test suite that comes with this module has been changed to
+        perform its test cases against canned data. If you want to perform
+        the tests against the live Amazon servers instead, just set the
+        environment variable
+
+            NET_AMAZON_LIVE_TESTS=1
+
+WHY ISN'T THERE SUPPORT FOR METHOD XYZ?
+        Because nobody wrote it yet. If Net::Amazon doesn't yet support a
+        method advertised on Amazon's web service, you could help us out.
+        Net::Amazon has been designed to be expanded over time, usually it
+        only takes a couple of lines to support a new method, the rest is
+        done via inheritance within Net::Amazon.
+
+        Here's the basic plot:
+
+        *   Get Net::Amazon from CVS. Use
+
+                    # (Just hit enter when prompted for a password)
+                cvs -d:pserver:anonymous at cvs.net-amazon.sourceforge.net:/cvsroot/net-amazon login
+                cvs -z3 -d:pserver:anonymous at cvs.net-amazon.sourceforge.net:/cvsroot/net-amazon co Net-Amazon
+
+            If this doesn't work, just use the latest distribution from
+            net-amazon.sourceforge.net.
+
+        *   Write a new Net::Amazon::Request::XYZ package, start with this
+            template
+
+                ######################################
+                package Net::Amazon::Request::XYZ;
+                ######################################
+                use base qw(Net::Amazon::Request);
+
+                ######################################
+                sub new {
+                ######################################
+                    my($class, %options) = @_;
+
+                    if(!exists $options{XYZ_option}) {
+                        die "Mandatory parameter 'XYZ_option' not defined";
+                    }
+    
+                    my $self = $class->SUPER::new(%options);
+    
+                    bless $self, $class;   # reconsecrate
+                }
+
+            and add documentation. Then, create a new
+            Net::Amazon::Response::XYZ module:
+
+                ##############################
+                package Net::Amazon::Response;
+                ##############################
+                use base qw(Net::Amazon::Response);
+
+                use Net::Amazon::Property;
+
+                ##############################
+                sub new {
+                ##############################
+                    my($class, %options) = @_;
+    
+                    my $self = $class->SUPER::new(%options);
+    
+                    bless $self, $class;   # reconsecrate
+                }
+
+            and also add documentation to it. Then, add the line
+
+                use Net::Amazon::Request::XYZ;
+
+            to Net/Amazon.pm.
+
+        And that's it! Again, don't forget the *add documentation* part.
+        Modules without documentation are of no use to anybody but yourself.
+
+        Check out the different Net::Amazon::Request::* and
+        Net::Amazon::Response modules in the distribution if you need to
+        adapt your new module to fulfil any special needs, like a different
+        Amazon URL or a different way to handle the as_string() method.
+        Also, post and problems you might encounter to the mailing list,
+        we're gonna help you out.
+
+        If possible, provide a test case for your extension. When finished,
+        send a patch to the mailing list at
+
+           net-amazon-devel at lists.sourceforge.net
+
+        and if it works, I'll accept it and will work it into the main
+        distribution. Your name will show up in the contributor's list below
+        (unless you tell me otherwise).
+
+  SAMPLE SCRIPTS
+        There's a number of useful scripts in the distribution's eg/
+        directory. Take "power" for example, written by Martin Streicher
+        <martin.streicher at apress.com>: I lets you perform a *power search*
+        using Amazon's query language. To search for all books written by
+        Randal Schwartz about Perl, call this from the command line:
+
+            power 'author: schwartz subject: perl'
+
+        Note that you need to quote the query string to pass it as one
+        argument to "power". If a power search returns more results than you
+        want to process at a time, just limit the number of pages, telling
+        "power" which page to start at ("-s") and which one to finish with
+        ("-f"). Here's a search for all books on the subject "computer",
+        limited to the first 10 pages:
+
+            power -s 1 -f 10 'subject: computer'
+
+        Check out the script "power" in eg/ for more options.
+
+  HOW TO SEND ME PATCHES
+        If you want me to include your modification or enhancement in the
+        distribution of Net::Amazon, please do the following:
+
+        *   Work off the latest CVS version. Here's the steps to get it:
+
+                CVSROOT=:pserver:anonymous at cvs.net-amazon.sourceforge.net:/cvsroot/net-amazon
+                export CVSROOT
+                cvs login (just hit Enter)
+                cvs co Net-Amazon
+
+            This will create a new "Net-Amazon" directory with the latest
+            development version of "Net::Amazon" on your local machine.
+
+        *   Apply your changes to this development tree.
+
+        *   Run a diff between the tree and your changes it in this way:
+
+                cd Net-Amazon
+                cvs diff -Nau >patch_to_mike.txt
+
+        *   Email me "patch_to_mike.txt". If your patch works (and you've
+            included test cases and documentation), I'll apply it on the
+            spot.
+
+INSTALLATION
+        "Net::Amazon" depends on Log::Log4perl, which can be pulled from
+        CPAN by simply saying
+
+            perl -MCPAN -eshell 'install Log::Log4perl'
+
+        Also, it needs LWP::UserAgent and XML::Simple 2.x, which can be
+        obtained in a similar way.
+
+        Once all dependencies have been resolved, "Net::Amazon" installs
+        with the typical sequence
+
+            perl Makefile.PL
+            make
+            make test
+            make install
+
+        Make sure you're connected to the Internet while running "make test"
+        because it will actually contact amazon.com and run a couple of live
+        tests.
+
+        The module's distribution tarball and documentation are available at
+
+            http://perlmeister.com/devel/#amzn 
+
+        and on CPAN.
+
+SEE ALSO
+        The following modules play well within the "Net::Amazon" framework:
+
+        "Net::Amazon::RemoteCart"
+            by David Emery <dave at skiddlydee.com> provides a complete API for
+            creating Amazon shopping carts on a local site, managing them
+            and finally submitting them to Amazon for checkout. It is
+            available on CPAN.
+
+CONTACT
+        The "Net::Amazon" project's home page is hosted on
+
+            http://net-amazon.sourceforge.net
+
+        where you can find documentation, news and the latest development
+        and stable releases for download. If you have questions about how to
+        use "Net::Amazon", want to report a bug or just participate in its
+        development, please send a message to the mailing list
+        net-amazon-devel at lists.sourceforge.net
+
+AUTHOR
+        Mike Schilli, <na at perlmeister.com> (Please contact me via the
+        mailing list: net-amazon-devel at lists.sourceforge.net )
+
+        Contributors (thanks y'all!):
+
+            Andy Grundman <andy at hybridized.org>
+            Barnaby Claydon <bclaydon at perseus.com>
+            Batara Kesuma <bkesuma at gaijinweb.com>
+            Bill Fitzpatrick
+            Brian <brianbrian at gmail.com>
+            Brian Hirt <bhirt at mobygames.com>
+            Dan Kreft <dan at kreft.net>
+            Dan Sully <daniel at electricrain.com>
+            Jackie Hamilton <kira at cgi101.com>
+            Konstantin Gredeskoul <kig at get.topica.com>
+            Lance Cleveland <lancec at proactivewm.com>
+            Martha Greenberg <marthag at mit.edu>
+            Martin Streicher <martin.streicher at apress.com>
+            Mike Evron <evronm at dtcinc.net>
+            Padraic Renaghan <padraic at renaghan.com>
+            rayg <rayg at varchars.com>
+            Robert Graff <rgraff at workingdemo.com>
+            Robert Rothenberg <wlkngowl at i-2000.com>
+            Steve Rushe <steve at deeden.co.uk>
+            Tatsuhiko Miyagawa <miyagawa at livedoor.jp>
+            Tony Bowden <tony at kasei.com>
+
+COPYRIGHT AND LICENSE
+        Copyright 2003, 2004 by Mike Schilli <na at perlmeister.com>
+
+        This library is free software; you can redistribute it and/or modify
+        it under the same terms as Perl itself.
+

Added: packages/libnet-amazon-perl/branches/upstream/current/adm/podok
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/adm/podok	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/adm/podok	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,37 @@
+#!/usr/bin/perl
+###########################################
+# Mike Schilli, 2002 (m at perlmeister.com)
+###########################################
+use warnings;
+use strict;
+
+use Test::Pod;
+use Test::More;
+use File::Find;
+
+podok(@ARGV);
+0;
+
+##################################################
+sub podok {
+##################################################
+    my ($dir) = @_;
+
+    $dir ||= ".";
+
+    my @pms = ();
+
+    File::Find::find( sub {
+        return unless -f $_;
+        return unless /\.pm$/;
+        push @pms, "$File::Find::name";
+    }, $dir);
+
+    my $nof_tests = scalar @pms;
+
+    plan tests => $nof_tests;
+
+    for(@pms) {
+        pod_ok($_);
+    }
+}


Property changes on: packages/libnet-amazon-perl/branches/upstream/current/adm/podok
___________________________________________________________________
Name: svn:executable
   + 

Added: packages/libnet-amazon-perl/branches/upstream/current/eg/artist
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/eg/artist	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/eg/artist	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,31 @@
+#!/usr/bin/perl
+############################################################
+# artist artist_name
+# Mike Schilli <mschilli1 at aol.com>, 2003
+############################################################
+
+use strict;
+use warnings;
+
+use Net::Amazon;
+use Net::Amazon::Request::Artist;
+use Data::Dumper;
+
+die "usage: $0 artist\n(use Zwan as an example)\n" unless defined $ARGV[0];
+
+my $ua = Net::Amazon->new(
+    token       => 'YOUR_AMZN_TOKEN',
+);
+
+my $req = Net::Amazon::Request::Artist->new(
+    artist  => $ARGV[0],
+);
+
+   # Response is of type Net::Amazon::Artist::Response
+my $resp = $ua->request($req);
+
+if($resp->is_success()) {
+    print $resp->as_string, "\n";
+} else {
+    print $resp->message, "\n";
+}


Property changes on: packages/libnet-amazon-perl/branches/upstream/current/eg/artist
___________________________________________________________________
Name: svn:executable
   + 

Added: packages/libnet-amazon-perl/branches/upstream/current/eg/asin
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/eg/asin	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/eg/asin	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,21 @@
+#!/usr/bin/perl
+###########################################
+use warnings;
+use strict;
+
+use Net::Amazon;
+
+my $ua = Net::Amazon->new(
+    token       => 'YOUR_AMZN_TOKEN',
+);
+
+my $resp = $ua->search(
+    asin  => $ARGV[0],
+);
+
+if($resp->is_success()) {
+    print $resp->as_string(), "\n";
+} else {
+    print "Error: ", 
+          $resp->message(), "\n";
+}


Property changes on: packages/libnet-amazon-perl/branches/upstream/current/eg/asin
___________________________________________________________________
Name: svn:executable
   + 

Added: packages/libnet-amazon-perl/branches/upstream/current/eg/asin-de
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/eg/asin-de	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/eg/asin-de	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,22 @@
+#!/usr/bin/perl
+###########################################
+use warnings;
+use strict;
+
+use Net::Amazon;
+
+my $ua = Net::Amazon->new(
+    token       => 'YOUR_AMZN_TOKEN',
+    locale      => 'de',
+);
+
+my $resp = $ua->search(
+    asin  => "3827313783",
+);
+
+if($resp->is_success()) {
+    print $resp->as_string(), "\n";
+} else {
+    print "Error: ", 
+          $resp->message(), "\n";
+}


Property changes on: packages/libnet-amazon-perl/branches/upstream/current/eg/asin-de
___________________________________________________________________
Name: svn:executable
   + 

Added: packages/libnet-amazon-perl/branches/upstream/current/eg/asin_cache
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/eg/asin_cache	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/eg/asin_cache	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,44 @@
+#!/usr/bin/perl
+###########################################
+# asin_fetch
+# Mike Schilli, 2003 (m at perlmeister.com)
+# Fetch book info by ASIN
+#     asin_fetch 0201360683
+###########################################
+use warnings;
+use strict;
+
+use Net::Amazon;
+use Net::Amazon::Request::ASIN;
+use Cache::File;
+
+use Log::Log4perl qw(:easy);
+
+Log::Log4perl->easy_init({level => $INFO, layout => '%F{1}-%L: %m%n'});
+
+my $cache = Cache::File->new( 
+    cache_root        => '/tmp/mycache',
+    default_expires   => '10 sec',
+);
+
+my $ua = Net::Amazon->new(
+    token       => 'YOUR_AMZN_TOKEN',
+    cache       => $cache,
+);
+
+die "usage: $0 asin\n(use 0201360683 as " .
+    "an example)\n" unless defined $ARGV[0];
+
+my $req = Net::Amazon::Request::ASIN->new(
+    asin  => $ARGV[0],
+);
+
+  # Response is Net::Amazon::ASIN::Response
+my $resp = $ua->request($req);
+
+if($resp->is_success()) {
+    print $resp->as_string(), "\n";
+} else {
+    print "Error: ", 
+          $resp->message(), "\n";
+}


Property changes on: packages/libnet-amazon-perl/branches/upstream/current/eg/asin_cache
___________________________________________________________________
Name: svn:executable
   + 

Added: packages/libnet-amazon-perl/branches/upstream/current/eg/asin_dvd
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/eg/asin_dvd	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/eg/asin_dvd	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,35 @@
+#!/usr/bin/perl
+###########################################
+# asin_fetch
+# Mike Schilli, 2003 (m at perlmeister.com)
+# Fetch book info by ASIN
+#     asin_fetch 0201360683
+###########################################
+use warnings;
+use strict;
+
+use Net::Amazon;
+use Net::Amazon::Request::ASIN;
+
+use Log::Log4perl qw(:easy);
+
+Log::Log4perl->easy_init({level => $ERROR, layout => '%F{1}-%L: %m%n'});
+
+my $ua = Net::Amazon->new(
+    token       => 'YOUR_AMZN_TOKEN',
+);
+
+my $req = Net::Amazon::Request::ASIN->new(
+    asin  => "6305181772",
+);
+
+  # Response is Net::Amazon::ASIN::Response
+my $resp = $ua->request($req);
+
+for($resp->properties()) {
+    print "Studio: ", $_->studio(), "\n";
+    print "Directors: ", join ('/', $_->directors()), "\n";
+    print "Starring: ", join ('/', $_->starring()), "\n";
+    print "Features: ", join ('/', $_->features()), "\n";
+    print "MPAA: ", $_->mpaa_rating(), "\n";
+}


Property changes on: packages/libnet-amazon-perl/branches/upstream/current/eg/asin_dvd
___________________________________________________________________
Name: svn:executable
   + 

Added: packages/libnet-amazon-perl/branches/upstream/current/eg/asin_fetch
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/eg/asin_fetch	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/eg/asin_fetch	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,38 @@
+#!/usr/bin/perl
+###########################################
+# asin_fetch
+# Mike Schilli, 2003 (m at perlmeister.com)
+# Fetch book info by ASIN
+#     asin_fetch 0201360683
+###########################################
+use warnings;
+use strict;
+
+use Net::Amazon;
+use Net::Amazon::Request::ASIN;
+
+use Log::Log4perl qw(:easy);
+
+Log::Log4perl->easy_init({level => $INFO, layout => '%F{1}-%L: %m%n'});
+
+my $ua = Net::Amazon->new(
+    token         => 'YOUR_AMZN_TOKEN',
+    #response_dump => 0,
+);
+
+die "usage: $0 asin\n(use 0201360683 as " .
+    "an example)\n" unless defined $ARGV[0];
+
+my $req = Net::Amazon::Request::ASIN->new(
+    asin  => $ARGV[0],
+);
+
+  # Response is Net::Amazon::ASIN::Response
+my $resp = $ua->request($req);
+
+if($resp->is_success()) {
+    print $resp->as_string(), "\n";
+} else {
+    print "Error: ", 
+          $resp->message(), "\n";
+}


Property changes on: packages/libnet-amazon-perl/branches/upstream/current/eg/asin_fetch
___________________________________________________________________
Name: svn:executable
   + 

Added: packages/libnet-amazon-perl/branches/upstream/current/eg/asin_img
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/eg/asin_img	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/eg/asin_img	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,28 @@
+#!/usr/bin/perl
+###########################################
+# asin_img - Fetch an ASIN's image
+# Mike Schilli, 2003 (m at perlmeister.com)
+###########################################
+use warnings;
+use strict;
+
+use CGI qw(:all);
+use CGI::Carp qw(fatalsToBrowser);
+use Net::Amazon;
+use Net::Amazon::Request::ASIN;
+
+my $ua = Net::Amazon->new(
+    token => 'YOUR_AMZN_TOKEN'
+);
+
+die "usage: $0 asin=0201360683\n" 
+    unless param('asin');
+
+my $req = Net::Amazon::Request::ASIN->new(
+    asin  => param('asin')
+);
+
+my $resp = $ua->request($req);
+
+print redirect(
+     $resp->properties->{ImageUrlLarge});


Property changes on: packages/libnet-amazon-perl/branches/upstream/current/eg/asin_img
___________________________________________________________________
Name: svn:executable
   + 

Added: packages/libnet-amazon-perl/branches/upstream/current/eg/asin_mult
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/eg/asin_mult	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/eg/asin_mult	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,24 @@
+#!/usr/bin/perl
+###########################################
+use warnings;
+use strict;
+
+use Net::Amazon;
+
+my $ua = Net::Amazon->new(
+    token       => 'YOUR_AMZN_TOKEN',
+);
+
+my $resp = $ua->search(
+    asin  => [qw(0596005083 0596005008 0672326043)],
+    #asin  => "0596005083",
+);
+
+if($resp->is_success()) {
+    for($resp->properties()) {
+        print $_->as_string(), "\n";
+    } 
+} else {
+    print "Error: ", 
+          $resp->message(), "\n";
+}


Property changes on: packages/libnet-amazon-perl/branches/upstream/current/eg/asin_mult
___________________________________________________________________
Name: svn:executable
   + 

Added: packages/libnet-amazon-perl/branches/upstream/current/eg/asin_offerall
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/eg/asin_offerall	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/eg/asin_offerall	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,43 @@
+#!/usr/bin/perl
+###########################################
+# asin_fetch
+# Mike Schilli, 2003 (m at perlmeister.com)
+# Fetch book info by ASIN
+#     asin_fetch 0201360683
+###########################################
+use warnings;
+use strict;
+
+use Net::Amazon;
+use Net::Amazon::Request::ASIN;
+
+use Log::Log4perl qw(:easy);
+
+Log::Log4perl->easy_init({level => $INFO, layout => '%F{1}-%L: %m%n'});
+
+my $ua = Net::Amazon->new(
+    token         => 'YOUR_AMZN_TOKEN',
+);
+
+die "usage: $0 asin\n(use 0201360683 as " .
+    "an example)\n" unless defined $ARGV[0];
+
+my $req = Net::Amazon::Request::ASIN->new(
+    asin  => $ARGV[0],
+    offer => 'All',
+);
+
+  # Response is Net::Amazon::ASIN::Response
+my $resp = $ua->request($req);
+
+if($resp->is_success()) {
+    print $resp->as_string(), "\n";
+    my($p) = $resp->properties();
+    for(qw(CollectiblePrice CollectibleCount NumberOfOfferings
+ UsedCount ThirdPartyNewPrice ThirdPartyNewCount)) {
+        print "$_: ", $p->$_(), "\n";
+    }
+} else {
+    print "Error: ", 
+          $resp->message(), "\n";
+}


Property changes on: packages/libnet-amazon-perl/branches/upstream/current/eg/asin_offerall
___________________________________________________________________
Name: svn:executable
   + 

Added: packages/libnet-amazon-perl/branches/upstream/current/eg/blended.pl
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/eg/blended.pl	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/eg/blended.pl	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,25 @@
+#!/usr/bin/perl
+###########################################
+use warnings;
+use strict;
+
+use Net::Amazon;
+use Net::Amazon::Request::Blended;
+
+use Log::Log4perl qw(:easy);
+Log::Log4perl->easy_init($DEBUG);
+
+my $ua = Net::Amazon->new(token => 'AMAZON_TOKEN');
+my $response = $ua->search(blended => ($ARGV[0] || "Perl"));
+
+if($response->is_success()) {
+    print $response->total_results(), "\n";
+}
+
+__END__
+
+my @properties = $response->properties();
+
+foreach (@properties) {
+        print $_->as_string() . "\n";
+}


Property changes on: packages/libnet-amazon-perl/branches/upstream/current/eg/blended.pl
___________________________________________________________________
Name: svn:executable
   + 

Added: packages/libnet-amazon-perl/branches/upstream/current/eg/browse
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/eg/browse	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/eg/browse	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,42 @@
+#!/usr/bin/perl
+######################################################
+# Browse node search
+# Jackie Hamilton <kira at cgi101.com>, 2003
+# Mike Schilli <na at perlmeister.com>, 2003
+######################################################
+use warnings;
+use strict;
+
+use Net::Amazon;
+
+#use Log::Log4perl qw(:easy);
+#Log::Log4perl->easy_init({level => $DEBUG, file => "out"});
+
+die "usage: $0 node mode [keywords]\n".
+    "(use '4025' 'books' 'perl' as an example)\n"
+    unless defined $ARGV[1];
+
+my $ua = Net::Amazon->new(
+    token       => 'MY_AMAZON_TOKEN',
+);
+
+my $resp = $ua->search(
+    browsenode => $ARGV[0], 
+    mode => $ARGV[1],
+    defined $ARGV[2] ? 
+        (keywords => join('', @ARGV[2,])) : 
+        (),
+);
+
+die $resp->message() unless $resp->is_success();
+
+for ($resp->properties) {
+
+   unless($_->can("title")) {
+       warn "Not a book: ", $_->as_string();
+       next;
+   }
+   print $_->Asin(), " ",
+         $_->title(), " ",
+         $_->OurPrice(), "\n";
+}


Property changes on: packages/libnet-amazon-perl/branches/upstream/current/eg/browse
___________________________________________________________________
Name: svn:executable
   + 

Added: packages/libnet-amazon-perl/branches/upstream/current/eg/cd_fetch
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/eg/cd_fetch	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/eg/cd_fetch	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,30 @@
+#!/usr/bin/perl
+###########################################
+# xx -- 
+# Mike Schilli, 2003 (m at perlmeister.com)
+###########################################
+use warnings;
+use strict;
+
+use Net::Amazon;
+
+my $ua = Net::Amazon->new(token => 'YOUR_AMZN_TOKEN');
+
+    # Get a request object
+my $resp = $ua->search(asin => 'B000000WA4');
+
+if($resp->is_success()) {
+    my($cd) = $resp->properties();
+    print "Album ....... ", $cd->album, "\n";
+    print "Artist ...... ", $cd->artist, "\n";
+    print "Year ........ ", $cd->year, "\n";
+    print "OurPrice .... ", $cd->OurPrice, "\n";
+    print "ListPrice ... ", $cd->ListPrice, "\n";
+    print "UPC ......... ", $cd->upc, "\n";
+    print "nummedia .... ", $cd->nummedia, "\n";
+    print "label ....... ", $cd->label, "\n";
+    print "media ....... ", $cd->media, "\n";
+    print "tracks ...... ", join("\n              ", $cd->tracks()), "\n";
+} else {
+    print $resp->message();
+}


Property changes on: packages/libnet-amazon-perl/branches/upstream/current/eg/cd_fetch
___________________________________________________________________
Name: svn:executable
   + 

Added: packages/libnet-amazon-perl/branches/upstream/current/eg/cheapo
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/eg/cheapo	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/eg/cheapo	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,65 @@
+#!/usr/bin/perl
+###########################################
+# maxauthors keyword
+# Mike Schilli <mschilli1 at aol.com>, 2003
+###########################################
+
+use strict;
+use warnings;
+
+use Net::Amazon;
+use Net::Amazon::Property;
+use Net::Amazon::Request::Keyword;
+
+# use Log::Log4perl qw(:easy);
+# Log::Log4perl->easy_init({level => $DEBUG, layout => '%F{1}-%L: %m%n'});
+
+die "usage: $0 keyword" unless 
+    defined $ARGV[0];
+
+my $ua = Net::Amazon->new(
+    token       => 'YOUR_AMZN_TOKEN',
+    max_pages   => 20,
+);
+
+my $req = Net::Amazon::Request::Keyword->new(
+    keyword   => $ARGV[0],
+    mode      => "books"
+);
+
+ # Response: Net::Amazon::Keyword::Response
+my $resp = $ua->request($req);
+
+if($resp->is_error()) {
+    die "Error: ", $resp->message();
+}
+
+my $max_authors = 0;
+my @books = 
+   sort { saved($b) <=> saved($a) }
+   grep { $_->Catalog eq "Book" &&
+          $_->title =~ /$ARGV[0]/i &&
+          $_->ListPrice }
+    $resp->properties;
+
+for(0..4) {
+    next unless $books[$_];
+    printf "%.2f%% (%s/%s) %s\n\n", 
+          saved($books[$_]),
+          $books[$_]->ListPrice,
+          $books[$_]->OurPrice,
+          $books[$_]->as_string;
+}
+
+###########################################
+sub saved {
+###########################################
+    my($book) = @_;
+
+    my $list = $book->ListPrice;
+    my $our  = $book->OurPrice;
+    $list =~ s/\$//;
+    $our  =~ s/\$//;
+
+    return ($list - $our)/$list*100;
+}


Property changes on: packages/libnet-amazon-perl/branches/upstream/current/eg/cheapo
___________________________________________________________________
Name: svn:executable
   + 

Added: packages/libnet-amazon-perl/branches/upstream/current/eg/dejazz
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/eg/dejazz	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/eg/dejazz	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,30 @@
+#!/usr/bin/perl
+######################################################
+# Mike Schilli, 2004
+# Print out the 10 best-selling german Jazz CDs
+# (Perl implementation of the Java program presented 
+#  in iX 06/2004, "Handelspartner", p. 125, 
+#  by Ingo Macherius).
+######################################################
+use warnings;
+use strict;
+
+use Net::Amazon;
+
+my $ua = Net::Amazon->new(
+  token     => 'MY_AMZN_TOKEN',
+  locale    => 'de',
+  max_pages => 1,
+);
+
+my $resp = $ua->search(
+  browsenode => '255919',
+  mode       => 'pop-music-de',
+  sort       => '+salesrank',
+);
+
+for ($resp->properties) {
+  print $_->artist(), ": ", 
+        $_->album(), " (",
+        $_->OurPrice(), ")\n";
+}


Property changes on: packages/libnet-amazon-perl/branches/upstream/current/eg/dejazz
___________________________________________________________________
Name: svn:executable
   + 

Added: packages/libnet-amazon-perl/branches/upstream/current/eg/exchange
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/eg/exchange	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/eg/exchange	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,22 @@
+#!/usr/local/bin/perl
+
+use strict;
+use Net::Amazon;
+use Data::Dumper; # for debugging
+use Log::Log4perl qw(:easy);
+Log::Log4perl->easy_init($DEBUG);
+
+#Your Amazon developer's token
+my $dev_token='[dev token here]';
+
+my $ua = Net::Amazon->new(token => $dev_token);
+
+# Get a request object
+my $response = $ua->search(exchange => 'Y04Y3424291Y2398445');
+
+if($response->is_success()) {
+    my $result = $response->result();
+    print $result->ExchangeEndDate(), "\n";
+} else {
+        print "Error: ", $response->message(), "\n";
+}


Property changes on: packages/libnet-amazon-perl/branches/upstream/current/eg/exchange
___________________________________________________________________
Name: svn:executable
   + 

Added: packages/libnet-amazon-perl/branches/upstream/current/eg/heavy
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/eg/heavy	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/eg/heavy	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,34 @@
+#!/usr/bin/perl
+###########################################
+# asin_fetch
+# Mike Schilli, 2003 (m at perlmeister.com)
+# Fetch book info by ASIN
+#     asin_fetch 0201360683
+###########################################
+use warnings;
+use strict;
+
+use Net::Amazon;
+use Net::Amazon::Request::ASIN;
+use Data::Dumper;
+use Log::Log4perl qw(:easy);
+Log::Log4perl->easy_init($DEBUG);
+
+my $ua = Net::Amazon->new(
+    token       => 'YOUR_AMZN_TOKEN',
+);
+
+die "usage: $0 asin\n(use 0201360683 as " .
+    "an example)\n" unless defined $ARGV[0];
+
+my $req = Net::Amazon::Request::ASIN->new(
+    asin  => $ARGV[0],
+    type  => 'heavy',
+);
+
+  # Response is Net::Amazon::ASIN::Response
+my $resp = $ua->request($req);
+
+if($resp->is_success()) {
+    print Dumper($resp), "\n";
+}


Property changes on: packages/libnet-amazon-perl/branches/upstream/current/eg/heavy
___________________________________________________________________
Name: svn:executable
   + 

Added: packages/libnet-amazon-perl/branches/upstream/current/eg/keyword
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/eg/keyword	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/eg/keyword	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,35 @@
+#!/usr/bin/perl
+###########################################
+# keyword - search by keyword
+#     keyword what_to_search_for mode
+# Mike Schilli <mschilli1 at aol.com>, 2003
+###########################################
+
+use strict;
+use warnings;
+
+use Net::Amazon;
+use Net::Amazon::Property;
+use Net::Amazon::Request::Keyword;
+
+die "usage: $0 keyword what mode\n(use " .
+    "'perl power'/books as an example)\n" 
+    unless defined $ARGV[1];
+
+my $ua = Net::Amazon->new(
+    token       => 'YOUR_AMZN_TOKEN',
+    max_pages   => 5,
+);
+
+my $req = Net::Amazon::Request::Keyword->new(
+    keyword   => $ARGV[0],
+    mode      => $ARGV[1],
+);
+
+ # Response: Net::Amazon::Keyword::Response
+my $resp = $ua->request($req);
+
+for ($resp->properties) {
+   print $_->Asin(), " ",
+         $_->OurPrice(), "\n";
+}


Property changes on: packages/libnet-amazon-perl/branches/upstream/current/eg/keyword
___________________________________________________________________
Name: svn:executable
   + 

Added: packages/libnet-amazon-perl/branches/upstream/current/eg/manufacturer
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/eg/manufacturer	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/eg/manufacturer	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,27 @@
+#!/usr/bin/perl
+###########################################
+use warnings;
+use strict;
+
+use Net::Amazon;
+use Net::Amazon::Request::Manufacturer;
+
+die "usage: $0 manufacturer (e.g. disney)" unless defined $ARGV[0];
+
+my $ua = Net::Amazon->new(
+    token       => 'YOUR_AMZN_TOKEN',
+    max_pages     => 1,
+);
+
+my $req = Net::Amazon::Request::Manufacturer->new(
+    manufacturer  => $ARGV[0],
+);
+
+my $resp = $ua->request($req);
+
+if($resp->is_success()) {
+    print $resp->as_string(), "\n";
+} else {
+    print "Error: ", 
+          $resp->message(), "\n";
+}


Property changes on: packages/libnet-amazon-perl/branches/upstream/current/eg/manufacturer
___________________________________________________________________
Name: svn:executable
   + 

Added: packages/libnet-amazon-perl/branches/upstream/current/eg/maxauthors
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/eg/maxauthors	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/eg/maxauthors	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,42 @@
+#!/usr/bin/perl
+###########################################
+# maxauthors keyword
+# Search books by keyword and select those
+# with the highest number of authors.
+# Mike Schilli <mschilli1 at aol.com>, 2003
+###########################################
+
+use strict;
+use warnings;
+
+use Net::Amazon;
+use Net::Amazon::Property;
+use Net::Amazon::Request::Keyword;
+
+die "usage: $0 keyword" unless 
+    defined $ARGV[0];
+
+my $ua = Net::Amazon->new(
+    token       => 'YOUR_AMZN_TOKEN',
+    max_pages   => 10,
+);
+
+my $req = Net::Amazon::Request::Keyword->new(
+    keyword   => $ARGV[0],
+    mode      => "books"
+);
+
+ # Response: Net::Amazon::Keyword::Response
+my $resp = $ua->request($req);
+
+my $max_authors = 0;
+my @books = sort { 
+    scalar $b->authors() <=>
+    scalar $a->authors() }
+   grep { $_->title() =~ /$ARGV[0]/i }
+    $resp->properties;
+
+for(0..4) {
+    print scalar $books[$_]->authors,
+          " ", $books[$_]->as_string, "\n\n";
+}


Property changes on: packages/libnet-amazon-perl/branches/upstream/current/eg/maxauthors
___________________________________________________________________
Name: svn:executable
   + 

Added: packages/libnet-amazon-perl/branches/upstream/current/eg/power
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/eg/power	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/eg/power	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,56 @@
+#!/usr/bin/perl
+######################################################
+# Power Search
+# Martin Streicher <martin.streicher at apress.com>, 2003
+# Mike Schilli <na at perlmeister.com>, 2003
+######################################################
+use warnings;
+use strict;
+
+use Net::Amazon;
+use Net::Amazon::Property;
+use Net::Amazon::Request::Power;
+use Getopt::Std;
+
+#use Log::Log4perl qw(:easy);
+#Log::Log4perl->easy_init($DEBUG);
+
+my %opts        = ();   
+my $usage       = "usage: $0 [-s start] [-f finish] phrase [mode]\n".
+                  "(use 'subject: perl and author: schwartz' books ".
+		  "as an example)\n";
+
+getopts("s:f:", \%opts) || do {print $usage; exit 1};
+die $usage  
+    if ((!defined $ARGV[0]) || 
+        ((exists $opts{s} && exists $opts{f}) && ($opts{f} < $opts{s})));
+
+my $pagecnt     = $opts{s} || 1;
+my $limit       = $opts{f} || $opts{s} || 1;
+my $mode        = $ARGV[1] || "books";
+
+my $ua = Net::Amazon->new(
+    token       => 'MY_AMAZON_TOKEN',
+    max_pages   => 1,
+);
+
+while ($pagecnt <= $limit) {    
+    my $req = Net::Amazon::Request::Power->new(
+        power     => $ARGV[0],
+        mode      => $mode,
+        page      => $pagecnt++,
+        sort      => '+pricerank',
+    );
+
+    # Response: Net::Amazon::Power::Response
+    my $resp = $ua->request($req);
+    die "Error" unless $resp->is_success();
+    last unless $resp->status();
+
+    for ($resp->properties) {
+       print $_->Asin(), " ",
+	     $_->title(), " [",
+	     $_->isbn(), "] ",
+	     $_->OurPrice(), "\n";
+    }
+}


Property changes on: packages/libnet-amazon-perl/branches/upstream/current/eg/power
___________________________________________________________________
Name: svn:executable
   + 

Added: packages/libnet-amazon-perl/branches/upstream/current/eg/rate_limit
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/eg/rate_limit	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/eg/rate_limit	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,51 @@
+#!/usr/bin/perl
+###########################################
+# rate_limit
+# Mike Schilli, 2004 (m at perlmeister.com)
+# Test rate-limiting
+#     rate_limit 0201360683
+###########################################
+use warnings;
+use strict;
+
+use Net::Amazon;
+use Net::Amazon::Request::ASIN;
+
+use Log::Log4perl qw(:easy);
+
+my $conf = q(
+  log4perl.category.Net.Amazon             = WARN, Screen
+
+      # To disable the rate limiting messages
+  #log4perl.category.Net.Amazon.RateLimit   = FATAL, Screen
+  #log4perl.additivity.Net.Amazon.RateLimit = 0
+
+  log4perl.appender.Screen          = Log::Log4perl::Appender::Screen
+  log4perl.appender.Screen.layout   = Log::Log4perl::Layout::PatternLayout
+  log4perl.appender.Screen.layout.ConversionPattern = %F{1} %L> %m %n
+);
+
+Log::Log4perl::init(\$conf);
+
+my $ua = Net::Amazon->new(
+    token       => 'YOUR_AMZN_TOKEN',
+);
+
+die "usage: $0 asin\n(use 0201360683 as " .
+    "an example)\n" unless defined $ARGV[0];
+
+my $req = Net::Amazon::Request::ASIN->new(
+    asin  => $ARGV[0],
+);
+
+for(1..3) {
+      # Response is Net::Amazon::ASIN::Response
+    my $resp = $ua->request($req);
+
+    if($resp->is_success()) {
+        print $resp->as_string(), "\n";
+    } else {
+        print "Error: ", 
+              $resp->message(), "\n";
+    }
+}


Property changes on: packages/libnet-amazon-perl/branches/upstream/current/eg/rate_limit
___________________________________________________________________
Name: svn:executable
   + 

Added: packages/libnet-amazon-perl/branches/upstream/current/eg/reviews
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/eg/reviews	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/eg/reviews	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,54 @@
+#!/usr/bin/perl
+###########################################
+# reviews
+# Mike Schilli, 2003 (m at perlmeister.com)
+###########################################
+use warnings;
+use strict;
+
+use Net::Amazon;
+use Net::Amazon::Attribute::Review;
+use Text::Wrap;
+
+#use Log::Log4perl qw(:easy);
+#Log::Log4perl->easy_init({level => $DEBUG, layout => '%F{1}-%L: %m%n'});
+
+my $ua = Net::Amazon->new(
+    token => "MY_AMZN_TOKEN",
+);
+
+my $resp = $ua->search(
+    asin  => ($ARGV[0] || "0471237124"),
+);
+
+die "Request failed" unless $resp->is_success();
+
+for my $property ($resp->properties()) {
+
+    my $count = 0;
+    print "Reviews for '", $property->title(), "'\n\n";
+
+    my $reviewset = $property->review_set();
+
+    print "Average Rating:    ", $reviewset->average_customer_rating(), "\n";
+    print "Total Reviews:     ", $reviewset->total_reviews(), "\n\n";
+
+    for my $review ($reviewset->reviews()) {
+      print "=== Review #", ++$count, " ===\n";
+      print shape("Rating:            ", $review->rating()), "\n";
+      print shape("Summary:           ", $review->summary()), "\n";
+      print shape("Comment:           ", $review->comment()), "\n";
+      print "\n";
+    }
+}
+
+#######################################
+sub shape {
+#######################################
+    my($header, $text) = @_;
+
+    my $result = join '', 
+               fill($header, " " x length($header), split /\n/, $text);
+
+    return $result;
+}


Property changes on: packages/libnet-amazon-perl/branches/upstream/current/eg/reviews
___________________________________________________________________
Name: svn:executable
   + 

Added: packages/libnet-amazon-perl/branches/upstream/current/eg/seller
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/eg/seller	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/eg/seller	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,31 @@
+#!/usr/bin/perl
+############################################################
+# Seller test
+############################################################
+use strict;
+use warnings;
+
+use Net::Amazon;
+use Net::Amazon::Request::Seller;
+use Log::Log4perl qw(:easy);
+
+#Log::Log4perl->easy_init($DEBUG);
+
+my $ua = Net::Amazon->new(
+    token       => 'YOUR_AMZN_TOKEN',
+);
+
+my $req = Net::Amazon::Request::Seller->new(
+    seller  => 'A2GXAGU54VOP7',
+);
+
+my $resp = $ua->request(
+    $req,
+);
+
+if($resp->is_success()) {
+    print $resp->result()->as_string(), "\n";
+} else {
+    print "Error: ",
+          $resp->message(), "\n";
+}


Property changes on: packages/libnet-amazon-perl/branches/upstream/current/eg/seller
___________________________________________________________________
Name: svn:executable
   + 

Added: packages/libnet-amazon-perl/branches/upstream/current/eg/sim
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/eg/sim	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/eg/sim	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,24 @@
+#!/usr/bin/perl
+###########################################
+use warnings;
+use strict;
+
+use Net::Amazon;
+
+#use Log::Log4perl qw(:easy);
+#Log::Log4perl->easy_init($DEBUG);
+
+my $ua = Net::Amazon->new(
+    token       => 'YOUR_AMZN_TOKEN',
+);
+
+my $resp = $ua->search(
+    similar  => "0672320673",
+);
+
+if($resp->is_success()) {
+    print $resp->as_string(), "\n";
+} else {
+    print "Error: ", 
+          $resp->message(), "\n";
+}


Property changes on: packages/libnet-amazon-perl/branches/upstream/current/eg/sim
___________________________________________________________________
Name: svn:executable
   + 

Added: packages/libnet-amazon-perl/branches/upstream/current/eg/similar
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/eg/similar	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/eg/similar	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,101 @@
+#!/usr/bin/perl
+###########################################
+# similar
+# Mike Schilli, 2003 (m at perlmeister.com)
+# Fetch books that are similar to a book
+# and spider Amazon to a depth of 1.
+###########################################
+use warnings;
+use strict;
+
+use Net::Amazon;
+use Net::Amazon::Request::ASIN;
+use Data::Dumper;
+
+use Log::Log4perl qw(:easy);
+Log::Log4perl->easy_init($DEBUG);
+
+my $DEPTH = 1;
+
+my $ua = Net::Amazon->new(
+    token       => 'YOUR_AMZN_TOKEN',
+);
+
+$ARGV[0] = "0201360683";
+die "usage: $0 asin\n(use 0201360683 as an example)\n" unless defined $ARGV[0];
+
+print "Finding similar items (depth=$DEPTH) for:\n", 
+      asin($ARGV[0]), "\n\n";
+
+for(similars($ua, $ARGV[0], $DEPTH)) {
+    print $_->title(), "\n";
+}
+
+###########################################
+sub similars {
+###########################################
+    my($ua, $asin, $levels, $found) = @_;
+
+    $found = { } unless defined $found;
+
+    my $req = Net::Amazon::Request::ASIN->new(
+        asin  => $asin,
+        type  => 'heavy',
+    );
+
+        # Response is of type Net::Amazon::ASIN::Response
+    my $resp = $ua->request($req);
+
+    if($resp->is_error()) {
+        warn "Error: ", $resp->message(), "\n";
+        return ();
+    }
+
+    my @new = ();
+
+    ($found->{$asin}) = $resp->properties();
+
+    return values %$found if $levels < 1;
+
+    my $prod = $resp->xmlref()->{Details}->{SimilarProducts}->{Product};
+
+    unless(defined $prod) {
+        warn "$asin doesn't have similar items defined";
+        return values %$found;
+    }
+
+    my @plist = ($prod);
+    @plist = @{$prod} if ref($prod) eq "ARRAY";
+
+    for(@plist) {
+        if(!exists $found->{$_}) {
+            $found->{$_}++;
+            push @new, $_;
+        }
+    }
+ 
+    for(@new) {
+        similars($ua, $_, $levels-1, $found);
+    }
+
+    return values %$found;
+}
+
+###########################################
+sub asin {
+###########################################
+    my($asin) = @_;
+
+    my $req = Net::Amazon::Request::ASIN->new(
+        asin  => $ARGV[0],
+    );
+
+   # Response is of type Net::Amazon::ASIN::Response
+   my $resp = $ua->request($req);
+
+   if($resp->is_success()) {
+       return $resp->as_string();
+   } else {
+       die("Error: ", $resp->message(), "\n");
+   }
+}


Property changes on: packages/libnet-amazon-perl/branches/upstream/current/eg/similar
___________________________________________________________________
Name: svn:executable
   + 

Added: packages/libnet-amazon-perl/branches/upstream/current/eg/similar2
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/eg/similar2	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/eg/similar2	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,33 @@
+#!/usr/bin/perl
+############################################################
+# Similar test
+############################################################
+use strict;
+use warnings;
+
+use Net::Amazon;
+use Net::Amazon::Request::Similar;
+use Log::Log4perl qw(:easy);
+
+#Log::Log4perl->easy_init($DEBUG);
+
+my $ua = Net::Amazon->new(
+    token       => 'YOUR_AMZN_TOKEN',
+);
+
+my $req = Net::Amazon::Request::Similar->new(
+    similar  => 'B00005B6TL',
+);
+
+my $resp = $ua->request(
+    $req,
+);
+
+if($resp->is_success()) {
+    for($resp->properties()) {
+        print $_->as_string(), "\n";
+    }
+} else {
+    print "Error: ",
+          $resp->message(), "\n";
+}


Property changes on: packages/libnet-amazon-perl/branches/upstream/current/eg/similar2
___________________________________________________________________
Name: svn:executable
   + 

Added: packages/libnet-amazon-perl/branches/upstream/current/eg/textstream
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/eg/textstream	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/eg/textstream	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,26 @@
+#!/usr/bin/perl
+###########################################
+# textstream - trying rayg's textstream
+###########################################
+use warnings;
+use strict;
+
+use Net::Amazon;
+
+#use Log::Log4perl qw(:easy);
+#Log::Log4perl->easy_init({level => $DEBUG, layout => '%F{1}-%L: %m%n'});
+
+my $ua = Net::Amazon->new(
+    token => "MY_AMZN_TOKEN",
+);
+
+my $resp = $ua->search(
+    textstream  => "Here's some blurb mentioning the rolling stones",
+);
+
+if($resp->is_success()) {
+    print $resp->as_string(), "\n";
+} else {
+    print "Error: ", 
+          $resp->message(), "\n";
+}


Property changes on: packages/libnet-amazon-perl/branches/upstream/current/eg/textstream
___________________________________________________________________
Name: svn:executable
   + 

Added: packages/libnet-amazon-perl/branches/upstream/current/eg/upc
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/eg/upc	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/eg/upc	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,22 @@
+#!/usr/bin/perl
+###########################################
+use warnings;
+use strict;
+
+use Net::Amazon;
+
+my $ua = Net::Amazon->new(
+    token       => 'YOUR_AMZN_TOKEN',
+);
+
+my $resp = $ua->search(
+    upc  => "075596278324",
+    mode => "music",
+);
+
+if($resp->is_success()) {
+    print $resp->as_string(), "\n";
+} else {
+    print "Error: ", 
+          $resp->message(), "\n";
+}


Property changes on: packages/libnet-amazon-perl/branches/upstream/current/eg/upc
___________________________________________________________________
Name: svn:executable
   + 

Added: packages/libnet-amazon-perl/branches/upstream/current/eg/wishlist
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/eg/wishlist	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/eg/wishlist	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,30 @@
+#!/usr/bin/perl
+############################################################
+# wishlist wishlist_id
+# Mike Schilli <mschilli1 at aol.com>, 2003
+############################################################
+
+use strict;
+use warnings;
+
+use Net::Amazon;
+use Net::Amazon::Request::Wishlist;
+
+#use Log::Log4perl qw(:easy);
+#Log::Log4perl->easy_init($DEBUG);
+
+die "usage: $0 wishlist_id\n" .
+    "(use 1XL5DWOUFMFVJ as an example)\n" unless $ARGV[0];
+
+my $ua = Net::Amazon->new(
+    token       => 'YOUR_AMZN_TOKEN',
+);
+
+my $req = Net::Amazon::Request::Wishlist->new(
+    id  => $ARGV[0]
+);
+
+   # Response is of type Net::Amazon::ASIN::Response
+my $resp = $ua->request($req);
+
+print $resp->as_string, "\n";


Property changes on: packages/libnet-amazon-perl/branches/upstream/current/eg/wishlist
___________________________________________________________________
Name: svn:executable
   + 

Added: packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Attribute/Review.pm
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Attribute/Review.pm	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Attribute/Review.pm	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,104 @@
+######################################################################
+package Net::Amazon::Attribute::Review;
+######################################################################
+use warnings;
+use strict;
+use Log::Log4perl qw(:easy);
+use base qw(Net::Amazon);
+
+__PACKAGE__->make_accessor($_) for qw(rating summary comment);
+
+##################################################
+sub new {
+##################################################
+    my($class, %options) = @_;
+
+    my $self = {
+        rating  => "",
+        summary => "",
+        comment => "",
+        %options,
+    };
+
+    bless $self, $class;
+}
+
+##################################################
+sub init_via_xmlref {
+##################################################
+    my($self, $xmlref) = @_;
+
+    for(qw(Rating Summary Comment)) {
+        my $method = lc($_);
+        if($xmlref->{$_}) {
+            $self->$method($xmlref->{$_});
+        } else {
+            #LOGWARN "No '$_'";
+            return undef;
+        }
+    }
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Net::Amazon::Attribute::Review - Customer Review Class
+
+=head1 SYNOPSIS
+
+    use Net::Amazon::Attribute::Review;
+    my $rev = Net::Amazon::Attribute::Review->new(
+                 'rating'  => $rating,
+                 'summary' => $summary,
+                 'comment' => $comment,
+    );
+
+=head1 DESCRIPTION
+
+C<Net::Amazon::Attribute::Review> holds customer reviews.
+
+=head2 METHODS
+
+=over 4
+
+=item rating()
+
+Accessor for the numeric value of the rating.
+
+=item summary()
+
+Accessor for the string value of the summary.
+
+=item comment()
+
+Accessor for the string value of the customer comment.
+
+=back
+
+=head1 SEE ALSO
+
+=head1 AUTHOR
+
+Mike Schilli, E<lt>m at perlmeister.comE<gt>
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright 2003 by Mike Schilli E<lt>m at perlmeister.comE<gt>
+
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself. 
+
+=cut
+
+__END__
+      <Reviews>
+         <AvgCustomerRating>4.33</AvgCustomerRating>
+         <TotalCustomerReviews>6</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>4</Rating>
+            <Summary>Good introduction to Perl, and great reference</Summary>
+            <Comment>From its corny title you might expect another one of those 
+

Added: packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Attribute/ReviewSet.pm
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Attribute/ReviewSet.pm	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Attribute/ReviewSet.pm	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,137 @@
+######################################################################
+package Net::Amazon::Attribute::ReviewSet;
+######################################################################
+use warnings;
+use strict;
+use Log::Log4perl qw(:easy);
+use Net::Amazon::Attribute::Review;
+use base qw(Net::Amazon);
+
+__PACKAGE__->make_accessor($_) for qw(average_customer_rating total_reviews);
+
+##################################################
+sub new {
+##################################################
+    my($class, %options) = @_;
+
+    my $self = {
+        reviews => [],  # list of reviews
+    };
+
+    bless $self, $class;
+}
+
+###########################################
+sub add_review {
+###########################################
+    my($self, $review) = @_;
+
+    if(ref $review ne "Net::Amazon::Attribute::Review") {
+        warn "add_review called with type ", ref $review;
+        return undef;
+    }
+
+    push @{$self->{reviews}}, $review;
+}
+
+###########################################
+sub reviews {
+###########################################
+    my($self) = @_;
+
+    return @{$self->{reviews}};
+}
+
+##################################################
+sub init_via_xmlref {
+##################################################
+    my($self, $xmlref) = @_;
+
+    my @pairs = qw(AvgCustomerRating    average_customer_rating
+                   TotalCustomerReviews total_reviews);
+
+    while(my($field, $method) = splice @pairs, 0, 2) {
+        
+        if(defined $xmlref->{$field}) {
+            DEBUG "Setting $field via $method to $xmlref->{$field}";
+            $self->$method($xmlref->{$field});
+        } else {
+            LOGWARN "No '$field'";
+            return undef;
+        }
+    }
+
+    if(ref $xmlref->{CustomerReview} ne "ARRAY") {
+        $xmlref->{CustomerReview} = [$xmlref->{CustomerReview}];
+    }
+
+    for my $review_xmlref (@{$xmlref->{CustomerReview}}) {
+        my $review = Net::Amazon::Attribute::Review->new();
+        $review->init_via_xmlref($review_xmlref);
+        DEBUG "Adding review ", $review->summary();
+        $self->add_review($review);
+    }
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Net::Amazon::Attribute::ReviewSet - A set of customer reviews
+
+=head1 SYNOPSIS
+
+    use Net::Amazon::Attribute::ReviewSet;
+    my $rev = Net::Amazon::Attribute::Review->new(
+        average_customer_rating => $avg,
+        total_reviews  => $total,
+        );
+
+=head1 DESCRIPTION
+
+C<Net::Amazon::Attribute::ReviewSet> holds a list of customer
+reviews, each of type C<Net::Amazon::Attribute::Review>.
+
+=head2 METHODS
+
+=over 4
+
+=item C<< $self->reviews() >>
+
+Returns a list of C<Net::Amazon::Attribute::Review> objects.
+
+=item C<< $self->average_customer_rating() >>
+
+Accessor for the average customer rating, a numeric value.
+
+=item C<< $self->total_reviews() >>
+
+Accessor for the total number of reviews. Please note that this
+might not be equal to the number of reviews held in the list, since
+there might be less customer reviews than total reviews (reviews
+can also be non-customer-reviews, but they're not available by
+the web service as of Aug 2003).
+
+=item C<< $self->add_review($rev) >>
+
+Add a C<Net::Amazon::Attribute::Review> object to the list.
+(Used internally only).
+
+=back
+
+=head1 SEE ALSO
+
+=head1 AUTHOR
+
+Mike Schilli, E<lt>m at perlmeister.comE<gt>
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright 2003 by Mike Schilli E<lt>m at perlmeister.comE<gt>
+
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself. 
+
+=cut

Added: packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Property/Book.pm
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Property/Book.pm	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Property/Book.pm	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,152 @@
+######################################################################
+package Net::Amazon::Property::Book;
+######################################################################
+use warnings;
+use strict;
+use base qw(Net::Amazon::Property);
+
+__PACKAGE__->make_accessor($_) for qw(title publisher binding isbn);
+
+##################################################
+sub new {
+##################################################
+    my($class, %options) = @_;
+
+    my $self = $class->SUPER::new(%options);
+    bless $self, $class; # Bless into this class
+
+    if(exists $options{xmlref}) {
+        $self->init_via_xmlref($options{xmlref});
+    }
+
+    return $self;
+}
+
+##################################################
+sub init_via_xmlref {
+##################################################
+    my($self, $xmlref) = @_;
+
+    $self->SUPER::init_via_xmlref($xmlref);
+
+    $self->authors($xmlref->{Authors}->{Author});
+    $self->title($xmlref->{ProductName});
+    $self->publisher($xmlref->{Manufacturer});
+    $self->binding($xmlref->{Media});
+    $self->isbn($xmlref->{Isbn});
+}
+
+##################################################
+sub author {
+##################################################
+    my($self, $nameref) = @_;
+
+    # Only return the first author
+    return ($self->authors($nameref))[0];
+}
+
+##################################################
+sub authors {
+##################################################
+    my($self, $nameref) = @_;
+
+    if(defined $nameref) {
+        if(ref $nameref eq "ARRAY") {
+            $self->{authors} = $nameref;
+        } else {
+            $self->{authors} = [$nameref];
+        }
+    }
+
+       # Return a list
+    return $self->{authors} ? @{$self->{authors}} : ();
+}
+
+##################################################
+sub as_string {
+##################################################
+    my($self) = @_;
+
+    return join('/', $self->authors) . ", " .
+      '"' . $self->title . '"' . ", " .
+      $self->year . ", " .
+      $self->OurPrice . ", " .
+      $self->Asin;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Net::Amazon::Property::Book - Class for books on amazon.com
+
+=head1 SYNOPSIS
+
+  use Net::Amazon;
+
+  # ...
+
+  if($resp->is_success()) {
+      for my $prop ($resp->properties) {
+          print join("/", $prop->authors(), " ",
+                $prop->title(), " ",
+                $prop->publisher(), " ",
+                $prop->year(), "\n";
+  }
+
+=head1 DESCRIPTION
+
+C<Net::Amazon::Property::Book> is derived from 
+C<Net::Amazon::Property> and on top of the all-purpose
+methods the base class provides, it offers specialized accessors for
+book parameters.
+
+=head2 METHODS
+
+=over 4
+
+=item authors()
+
+Returns a list of the book's authors. There's also a C<author()> method
+which just returns the I<first> author.
+
+=item publisher()
+
+Returns the book's publishing company as a string.
+
+=item title()
+
+Returns the book's title as a string.
+
+=item isbn()
+
+Returns the book's ISBN number.
+
+=item new(xmlref => $xmlref)
+
+Initializes an object by passing a hash of hashes structure containing
+the XML data returned from the service. Usually, this is just used by
+C<Net::Amazon> internally to initialize objects for on backcoming
+data.
+
+=back
+
+Check out L<Net::Amazon::Property> for all-purpose accessors, like
+C<year>, C<OurPrice>, C<ListPrice>, etc.
+
+=head1 SEE ALSO
+
+=head1 AUTHOR
+
+Mike Schilli, E<lt>m at perlmeister.comE<gt>
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright 2003 by Mike Schilli E<lt>m at perlmeister.comE<gt>
+
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself. 
+
+=cut

Added: packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Property/DVD.pm
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Property/DVD.pm	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Property/DVD.pm	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,156 @@
+######################################################################
+package Net::Amazon::Property::DVD;
+######################################################################
+use warnings;
+use strict;
+use base qw(Net::Amazon::Property);
+
+__PACKAGE__->make_accessor($_) for qw(title studio theatrical_release_date
+  media nummedia upc mpaa_rating);
+__PACKAGE__->make_array_accessor($_) for qw(directors starring features);
+
+##################################################
+sub new {
+##################################################
+    my($class, %options) = @_;
+
+    my $self = $class->SUPER::new(%options);
+    bless $self, $class; # Bless into this class
+
+    if(exists $options{xmlref}) {
+        $self->init_via_xmlref($options{xmlref});
+    }
+
+    return $self;
+}
+
+##################################################
+sub director {
+##################################################
+    my($self, $nameref) = @_;
+
+    # Only return the first director
+    return ($self->directors($nameref))[0];
+}
+
+##################################################
+sub init_via_xmlref {
+##################################################
+    my($self, $xmlref) = @_;
+
+    $self->SUPER::init_via_xmlref($xmlref);
+
+    $self->title($xmlref->{ProductName});
+    $self->studio($xmlref->{Manufacturer});
+    $self->directors($xmlref->{Directors}->{Director});
+    $self->starring($xmlref->{Starring}->{Actor});
+    $self->media($xmlref->{Media});
+    $self->nummedia($xmlref->{NumMedia});
+    $self->upc($xmlref->{Upc});
+    $self->theatrical_release_date($xmlref->{TheatricalReleaseDate});
+    $self->mpaa_rating($xmlref->{MpaaRating});
+    $self->features($xmlref->{Features}->{Feature});
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Net::Amazon::Property::DVD - Class for DVDs on amazon.com
+
+=head1 SYNOPSIS
+
+  use Net::Amazon;
+
+  # ...
+
+  if($resp->is_success()) {
+      for my $prop ($resp->properties) {
+          print $_->title(), " ",
+                $_->studio(), " ",
+                $_->year(), "\n";
+  }
+
+=head1 DESCRIPTION
+
+C<Net::Amazon::Property::DVD> is derived from 
+C<Net::Amazon::Property> and on top of the all-purpose
+methods the base class provides, it offers specialized accessors for
+DVD parameters.
+
+=head2 METHODS
+
+=over 4
+
+=item title()
+
+Returns the title of the DVD.
+
+=item studio()
+
+Returns the studio.
+
+=item directors()
+
+Returns a list of directors. Note that there's also a director() method
+only returning the first director.
+
+=item starring()
+
+Returns a list of actors starring in the movie.
+
+=item upc()
+
+Returns the DVD's UPC as a string.
+
+=item media()
+
+Returns the DVD's media type as a string.
+
+=item nummedia()
+
+Returns the DVD's number of media (number of discs) as a string.
+Amazon doesn't always send this back, so if you get undef assume it
+is 1.
+
+=item theatrical_release_date()
+
+Returns the DVD's theatrical release date.
+
+=item mpaa_rating()
+
+Returns the DVD's MPAA rating.
+
+=item features()
+
+Returns the DVD's features as a list of strings. Examples: 
+"Color", "Closed-captioned", "Widescreen".
+
+=item new(xmlref => $xmlref)
+
+Initializes an object by passing a hash of hashes structure containing
+the XML data returned from the service. Usually, this is just used by
+C<Net::Amazon> internally to initialize objects for on backcoming
+data.
+
+=back
+
+Check out L<Net::Amazon::Property> for all-purpose accessors, like
+C<year>, C<OurPrice>, C<ListPrice>, etc.
+
+=head1 SEE ALSO
+
+=head1 AUTHOR
+
+Mike Schilli, E<lt>m at perlmeister.comE<gt>
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright 2003 by Mike Schilli E<lt>m at perlmeister.comE<gt>
+
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself. 
+
+=cut

Added: packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Property/Music.pm
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Property/Music.pm	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Property/Music.pm	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,161 @@
+######################################################################
+package Net::Amazon::Property::Music;
+######################################################################
+use warnings;
+use strict;
+use base qw(Net::Amazon::Property);
+
+__PACKAGE__->make_accessor($_) for qw(album label media nummedia upc);
+__PACKAGE__->make_array_accessor($_) for qw(artists tracks);
+
+##################################################
+sub new {
+##################################################
+    my($class, %options) = @_;
+
+    my $self = $class->SUPER::new(%options);
+    bless $self, $class; # Bless into this class
+
+    if(exists $options{xmlref}) {
+        $self->init_via_xmlref($options{xmlref});
+    }
+
+    return $self;
+}
+
+##################################################
+sub artist {
+##################################################
+    my($self, $nameref) = @_;
+
+    # Only return the first artist
+    return ($self->artists($nameref))[0];
+}
+
+##################################################
+sub init_via_xmlref {
+##################################################
+    my($self, $xmlref) = @_;
+
+    $self->SUPER::init_via_xmlref($xmlref);
+
+    $self->artists($xmlref->{Artists}->{Artist});
+    $self->tracks($xmlref->{Tracks}->{Track});
+    $self->album($xmlref->{ProductName});
+    $self->label($xmlref->{Manufacturer});
+    $self->upc($xmlref->{Upc});
+    $self->media($xmlref->{Media});
+    $self->nummedia($xmlref->{NumMedia});
+}
+
+##################################################
+sub as_string {
+##################################################
+    my($self) = @_;
+
+    return join('/', $self->artists) . ", " .
+           '"' . $self->album . '"' . ", " .
+           $self->year . ", " .
+           $self->OurPrice . ", " .
+           $self->Asin;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Net::Amazon::Property::Music - Class for pop CDs on amazon.com
+
+=head1 SYNOPSIS
+
+  use Net::Amazon;
+
+  # ...
+
+  if($resp->is_success()) {
+      for my $prop ($resp->properties) {
+          print join("/", $_->artists(), " ",
+                $_->album(), " ",
+                $_->label(), " ",
+                $_->year(), " ";
+                $_->upc(), " ";
+                $_->media(), " ";
+                $_->nummedia(), "\n";
+  }
+
+=head1 DESCRIPTION
+
+C<Net::Amazon::Property::Music> is derived from 
+C<Net::Amazon::Property> and on top of the all-purpose
+methods the base class provides, it offers specialized accessors for
+popular music CD parameters.
+
+=head2 METHODS
+
+=over 4
+
+=item artists()
+
+Returns a list of the CD's artists. There's also a C<artist()> method
+which just returns the first artist.
+
+=item tracks()
+
+Returns a list of the CD's track titles.
+
+=item label()
+
+Returns the music label as a string.
+
+=item album()
+
+Returns the CD's title as a string.
+
+=item upc()
+
+Returns the CD's UPC as a string.
+
+=item media()
+
+Returns the CD's media type as a string.
+
+=item nummedia()
+
+Returns the CD's number of media (number of discs) as a string.
+Amazon doesn't always send this back, so if you get undef assume it
+is 1.
+
+=item new(xmlref => $xmlref)
+
+Initializes an object by passing a hash of hashes structure containing
+the XML data returned from the service. Usually, this is just used by
+C<Net::Amazon> internally to initialize objects for on backcoming
+data.
+
+=back
+
+Check out L<Net::Amazon::Property> for all-purpose accessors, like
+C<year>, C<OurPrice>, C<ListPrice>, etc.
+
+=head1 SEE ALSO
+
+=head1 AUTHOR
+
+Mike Schilli, E<lt>m at perlmeister.comE<gt>
+
+=head1 THANKS
+
+Thanks to Padraic Renaghan E<lt>padraic at renaghan.com<gt> for adding
+the upc/media/nummedia fields.
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright 2003 by Mike Schilli E<lt>m at perlmeister.comE<gt>
+
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself. 
+
+=cut
+

Added: packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Property.pm
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Property.pm	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Property.pm	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,320 @@
+######################################################################
+package Net::Amazon::Property;
+######################################################################
+use warnings;
+use strict;
+use base qw(Net::Amazon);
+
+use Net::Amazon::Property::DVD;
+use Net::Amazon::Property::Book;
+use Net::Amazon::Property::Music;
+use Net::Amazon::Attribute::ReviewSet;
+use Data::Dumper;
+use Log::Log4perl qw(:easy);
+
+use warnings; 
+use strict;
+
+our @DEFAULT_ATTRIBUTES = qw(
+  OurPrice ImageUrlLarge ImageUrlMedium ImageUrlSmall
+  ReleaseDate Catalog Asin url Manufacturer UsedPrice
+  ListPrice ProductName Availability SalesRank
+  Media NumMedia ProductDescription
+  CollectiblePrice CollectibleCount NumberOfOfferings
+  UsedCount ThirdPartyNewPrice ThirdPartyNewCount
+  ThirdPartyProductInfo
+);
+
+__PACKAGE__->make_accessor($_) for @DEFAULT_ATTRIBUTES;
+__PACKAGE__->make_accessor($_) for qw(year review_set);
+__PACKAGE__->make_array_accessor($_) for qw(browse_nodes similar_asins);
+
+##################################################
+sub new {
+##################################################
+    my($class, %options) = @_;
+
+    if(!$options{xmlref}) {
+        die "Mandatory param xmlref missing";
+    }
+
+    my $self = { 
+        %options, 
+               };
+
+    bless $self, $class;
+
+        # Set default attributes
+    for my $attr (@DEFAULT_ATTRIBUTES) {
+        $self->$attr($options{xmlref}->{$attr});
+    }
+
+    # The release date is sometimes missing
+    if($options{xmlref}->{ReleaseDate}) {
+        my ($year) = ($options{xmlref}->{ReleaseDate} =~ /(\d{4})/);
+        $self->year($year);
+    } else {
+        $self->year("");
+    }
+
+    my $browse_nodes = $options{xmlref}->{BrowseList}->{BrowseNode};
+    if(ref($browse_nodes) eq "ARRAY") {
+      my @nodes = map {
+        $_->{BrowseName}
+      } @{ $browse_nodes };
+      $self->browse_nodes(\@nodes);
+    } elsif (ref($browse_nodes) eq "HASH") {
+      $self->browse_nodes([ $browse_nodes->{BrowseName} ]);
+    } else {
+      $self->browse_nodes([ ]);
+    }
+
+    my $similar = $options{xmlref}->{SimilarProducts};
+    if(ref($similar) eq "HASH") {
+      $self->similar_asins($similar->{Product});
+    } else {
+      $self->similar_asins([ ]);
+    }
+
+    return $self;
+}
+
+##################################################
+sub as_string {
+##################################################
+    my($self) = @_;
+
+    my $result = "\"$self->{xmlref}->{ProductName}\", ";
+
+    if($self->{xmlref}->{Manufacturer}) {
+        $result .= "$self->{xmlref}->{Manufacturer}, ";
+    }
+
+    $result .= $self->year() . ", " if $self->year();
+
+    $result .= $self->OurPrice() . ", ";
+    $result .= $self->Asin();
+    return $result;
+}
+
+##################################################
+sub factory {
+##################################################
+    my(%options) = @_;
+
+    my $xmlref = $options{xmlref};
+    die "Called factory without xmlref" unless $xmlref;
+
+    # DEBUG(sub {"factory xmlref=" . Data::Dumper::Dumper($xmlref)});
+
+    my $catalog = $xmlref->{Catalog};
+    my $obj;
+
+    if(0) {
+    } elsif($catalog eq "Book") {
+        DEBUG("Creating new Book Property");
+        $obj = Net::Amazon::Property::Book->new(xmlref => $xmlref);
+    } elsif($catalog eq "Music") {
+        DEBUG("Creating new Music Property");
+        $obj = Net::Amazon::Property::Music->new(xmlref => $xmlref);
+    } elsif($catalog eq "DVD") {
+        DEBUG("Creating new DVD Property");
+        $obj = Net::Amazon::Property::DVD->new(xmlref => $xmlref);
+    } else {
+        DEBUG("Creating new Default Property ($catalog)");
+        $obj = Net::Amazon::Property->new(xmlref => $xmlref);
+    }
+
+    return $obj;
+}
+
+##################################################
+sub init_via_xmlref {
+##################################################
+    my($self, $xmlref) = @_;
+
+    my $reviewset = Net::Amazon::Attribute::ReviewSet->new();
+
+    if(exists $xmlref->{Reviews}) {
+        $reviewset->init_via_xmlref($xmlref->{Reviews});
+    }
+
+    $self->review_set($reviewset); 
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Net::Amazon::Property - Baseclass for products on amazon.com
+
+=head1 SYNOPSIS
+
+  use Net::Amazon;
+
+  # ...
+
+  if($resp->is_success()) {
+      for my $prop ($resp->properties) {
+          print $_->ProductName(), " ",
+                $_->Manufacturer(), " ",
+                $_->OurPrice(), "\n";
+
+=head1 DESCRIPTION
+
+C<Net::Amazon::Property> is the baseclass for results returned
+from Amazon web service queries. The term 'properties' is used as 
+a generic description for an item on amazon.com.
+
+Typically, the C<properties()> method of a C<Net::Amazon::Response::*> object
+will return one or more objects of class C<Net::Amazon::Property> or
+one of its subclasses, e.g. C<Net::Amazon::Property::Book> or
+C<Net::Amazon::Property::CD>.
+
+While C<Net::Amazon::Property> objects expose accessors for all 
+fields returned in the XML response (like C<OurPrice()>, C<ListPrice()>,
+C<Manufacturer()>, C<Asin()>, C<Catalog()>, C<ProductName()>, subclasses
+might define their own accessors to more class-specific fields
+(like the iC<Net::Amazon::Property::Book>'s C<authors()> method returning
+a list of authors, while C<Net::Amazon::Property>'s C<Authors()> method
+will return a reference to a sub-hash containing a C<Author> field, just like
+the response's XML contained it).
+
+=head2 METHODS
+
+Methods vary, depending on the item returned from a query. Here's the most
+common ones. They're all accessors, meaning they can be used like C<Method()>
+to retrieve the value or like C<Method($value)> to set the value of the
+field.
+
+=over 4
+
+=item Asin()
+
+The item's ASIN number.
+
+=item ProductName()
+
+Book title, CD album name or item name
+
+=item Availability()
+
+Text string describing if the item is available. Examples:
+C<"Usually ships within 24 hours"> or
+C<"Out of Print--Limited Availability">.
+
+=item Catalog()
+
+Shows the catalog the item was found in: C<Book>, C<Music>, C<Classical>,
+C<Electronics> etc.
+
+=item Authors()
+
+Returns a sub-hash with a C<Author> key, which points to either a single
+$scalar or to a reference of an array containing author names as scalars.
+
+=item ReleaseDate()
+
+Item's release date, format is "NN Monthname, Year".
+
+=item Manufacturer()
+
+Music label, publishing company or manufacturer
+
+=item ImageUrlSmall()
+
+URL to a small (thumbnail) image of the item
+
+=item ImageUrlMedium()
+
+URL to a medium-size image of the item
+
+=item ImageUrlLarge()
+
+URL to a large image of the item
+
+=item ListPrice()
+
+List price of the item
+
+=item OurPrice()
+
+Amazon price of the item
+
+=item UsedPrice()
+
+Used price of the item
+
+=item SalesRank()
+
+Sales rank of the item (contains digits and commas, like 1,000,001)
+
+=item Media()
+
+Type of media (Paperback, etc.).
+
+=item NumMedia()
+
+Number of media the item carries (1,2 CDs etc.).
+
+=item ProductDescription()
+
+Lengthy textual description of the product.
+
+=item CollectiblePrice() 
+
+Lowest price in "Collectible" category.
+
+=item CollectibleCount()
+
+Number of offerings in "Collectible" category.
+
+=item NumberOfOfferings()
+
+Total number of offerings in all categories.
+
+=item UsedCount()
+
+Number of offerings in "Used" category.
+
+=item ThirdPartyNewPrice()
+
+Lowest price in "Third Party New" category.
+
+=item ThirdPartyNewCount()
+
+Number of offerings in "Third Party New" category.
+
+=item year()
+
+The release year extracted from ReleaseDate().
+
+=item browse_nodes()
+
+Returns a list of browse nodes (text string categories) for this item.
+
+=item similar_asins()
+
+Returns a list of ASINs of similar items for this item.
+
+=back
+
+Please check the subclasses of C<Net::Amazon::Property> for specialized 
+methods.
+
+=head1 SEE ALSO
+
+=head1 AUTHOR
+
+Mike Schilli, E<lt>m at perlmeister.comE<gt>
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright 2003 by Mike Schilli E<lt>m at perlmeister.comE<gt>
+
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself. 
+
+=cut

Added: packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/ASIN.pm
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/ASIN.pm	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/ASIN.pm	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,139 @@
+######################################################################
+package Net::Amazon::Request::ASIN;
+######################################################################
+use warnings;
+use strict;
+use base qw(Net::Amazon::Request);
+
+# These values are defined in the AWS SDK
+# (http://amazon.com/webservices) under
+# "Product and Catalog Data" / "ASIN and ISBN Searches"
+use constant MAX_ASINS_PER_TYPE => {
+    heavy => 10,
+    lite  => 30,
+};
+
+##################################################
+sub new {
+##################################################
+    my($class, %options) = @_;
+
+    $class->_assert_options_defined(\%options, 'asin');
+
+    $class->_convert_option(\%options,
+                            'asin',
+                            'AsinSearch',
+                            \&_process_asin_option);
+
+    my $self = $class->SUPER::new(%options);
+
+    bless $self, $class;   # reconsecrate
+}
+
+##
+## PRIVATE FUNCTIONS
+##
+
+# _process_asin_option( OPTIONS, KEY )
+#
+# Takes a reference to a hash of OPTIONS and checks the value keyed by
+# KEY to make sure it looks legitimate.  If the value associated with
+# KEY is an array, we check to make sure that we're not asking for
+# too many asins at once.
+#
+# Returns true if all goes well. If any problems are encountered,
+# die() will be called.
+#
+sub _process_asin_option {
+    my ($options, $key) = @_;
+
+    # If the asins are supplied in the form of an array, we have to
+    # make sure that the caller isn't trying to ask for too many at a
+    # time. If we don't make this test, those excessive asins will be
+    # silently ignored by the AWS servers...resulting in potentially
+    # confusing results for the user.
+    if ( ref $options->{$key} eq 'ARRAY' ) {
+        my $type      = $options->{'type'} || __PACKAGE__->SUPER::DEFAULT_TYPE;
+        my $max_asins = MAX_ASINS_PER_TYPE->{$type};
+
+        # Dying is the right thing to do here because this is
+        # indicative of a programming error.
+        die "Only $max_asins may be requested at a time using type '$type'"
+            if ( @{$options->{$key}} > $max_asins );
+
+        $options->{$key} = join ',', @{$options->{$key}};
+    } elsif ( ref $options->{$key} ) {
+        die "The 'asin' parameter must either be a scalar or an array";
+    }
+
+    return 1;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Net::Amazon::Request::ASIN - Class for submitting ASIN requests
+
+=head1 SYNOPSIS
+
+  use Net::Amazon;
+  use Net::Amazon::Request::ASIN;
+
+  my $ua = Net::Amazon->new(
+      token       => 'YOUR_AMZN_TOKEN'
+  );
+
+  my $req = Net::Amazon::Request::ASIN->new( 
+      asin  => '0201360683'
+  );
+
+    # Response is of type Net::Amazon::Response::ASIN
+  my $resp = $ua->request($req);
+
+=head1 DESCRIPTION
+
+C<Net::Amazon::Request::ASIN> is a class used to submit ASIN requests
+to the Amazon web service.
+
+The ASIN of the item to look is specified in the C<asin> parameter.
+
+Upon success, the responses' C<properties()> method will return one
+single C<Net::Amazon::Property::*> object.
+
+=head2 METHODS
+
+=over 4
+
+=item new( asin => $asin )
+
+Constructs a new C<Net::Amazon::Request::ASIN> object, used to query
+the Amazon web service for an item with the specified ASIN number.
+
+C<$asin> can also be a reference to an array of ASINs, like in
+
+    $ua->search(asin => ["0201360683", "0596005083"]) 
+
+in which case a search for multiple ASINs is performed, returning a list of 
+results.
+
+=back
+
+Check L<Net::Amazon::Request> for common request parameters not listed here.
+
+=head1 SEE ALSO
+
+=head1 AUTHOR
+
+Mike Schilli, E<lt>m at perlmeister.comE<gt>
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright 2003 by Mike Schilli E<lt>m at perlmeister.comE<gt>
+
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself. 
+
+=cut

Added: packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/Artist.pm
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/Artist.pm	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/Artist.pm	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,86 @@
+######################################################################
+package Net::Amazon::Request::Artist;
+######################################################################
+use warnings;
+use strict;
+use base qw(Net::Amazon::Request);
+
+##################################################
+sub new {
+##################################################
+    my($class, %options) = @_;
+
+    if(exists $options{artist}) {
+        $options{ArtistSearch} = $options{artist};
+        delete $options{artist};
+        $options{mode} = "music";
+    } else {
+        die "Mandatory parameter 'artist' not defined";
+    }
+
+    my $self = $class->SUPER::new(%options);
+
+    bless $self, $class;   # reconsecrate
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Net::Amazon::Request::Artist - Class for submitting Artist requests
+
+=head1 SYNOPSIS
+
+  use Net::Amazon;
+  use Net::Amazon::Request::Artist;
+
+  my $ua = Net::Amazon->new(
+      token       => 'YOUR_AMZN_TOKEN'
+  );
+
+  my $req = Net::Amazon::Request::Artist->new( 
+      artist  => 'Zwan'
+  );
+
+    # Response is of type Net::Amazon::Response::Artist
+  my $resp = $ua->request($req);
+
+=head1 DESCRIPTION
+
+C<Net::Amazon::Request::Artist> is a class used to submit Artist search
+requests to the Amazon web service.
+
+The artist to search for is specified in the C<artist> parameter.
+
+Upon success, the responses' C<properties()> method will return a list of
+C<Net::Amazon::Property::Music> objects.
+
+Check L<Net::Amazon::Request> for common request parameters not listed here.
+
+=head2 METHODS
+
+=over 4
+
+=item new( artist => $artist )
+
+Constructs a new C<Net::Amazon::Request::Artist> object, used to query
+the Amazon web service for items of a given artist.
+
+=back
+
+=head1 SEE ALSO
+
+=head1 AUTHOR
+
+Mike Schilli, E<lt>m at perlmeister.comE<gt>
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright 2003 by Mike Schilli E<lt>m at perlmeister.comE<gt>
+
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself. 
+
+=cut

Added: packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/Blended.pm
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/Blended.pm	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/Blended.pm	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,80 @@
+######################################################################
+package Net::Amazon::Request::Blended;
+######################################################################
+use warnings;
+use strict;
+use base qw(Net::Amazon::Request);
+
+##################################################
+sub new {
+##################################################
+    my($class, %options) = @_;
+
+    $class->_assert_options_defined(\%options, 'blended');
+
+    $class->_convert_option(\%options,
+                            'blended',
+                            'BlendedSearch');
+
+    my $self = $class->SUPER::new(%options);
+
+    bless $self, $class;   # reconsecrate
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Net::Amazon::Request::Blended - request class for 'Blended Search'
+
+=head1 SYNOPSIS
+
+  use Net::Amazon;
+  use Net::Amazon::Request::Blended;
+
+  my $ua = Net::Amazon->new(
+      token       => 'YOUR_AMZN_TOKEN'
+  );
+
+  my $req = Net::Amazon::Request::Blended->new( 
+      blended => 'perl'
+  );
+
+  # Response is of type Net::Amazon::Response::Blended
+  my $resp = $ua->request($req);
+
+=head1 DESCRIPTION
+
+C<Net::Amazon::Request::Blended> is a class used to request
+I<Blended Searches> from the Amazon web service.
+
+The C<blended> parameter specifies the keyword search string
+for the blended query. C<mode> is not applicable to blended
+searches which returns books, music, etc all at once.
+
+Upon success, the response's C<properties()> method will return a list
+of C<Net::Amazon::Property::*> objects.
+
+=head2 METHODS
+
+=over 4
+
+=item new(keyword => $search_string)
+
+Constructs a new C<Net::Amazon::Request::Blended> object.
+
+See the "Amazon Web Services 2.1 API and Integration Guide" for details.
+
+=back
+
+Check L<Net::Amazon::Request> for common request parameters not listed here.
+
+=head1 SEE ALSO
+
+=head1 AUTHORS
+
+Robert Graff, E<lt>rgraff at workingdemo.comE<gt>
+
+=cut

Added: packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/BrowseNode.pm
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/BrowseNode.pm	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/BrowseNode.pm	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,137 @@
+######################################################################
+package Net::Amazon::Request::BrowseNode;
+######################################################################
+use warnings;
+use strict;
+use base qw(Net::Amazon::Request);
+
+##################################################
+sub new {
+##################################################
+    my($class, %options) = @_;
+
+    $class->_assert_options_defined(\%options,
+                                    qw(browsenode mode));
+
+    $class->_convert_option(\%options,
+                            'browsenode',
+                            'BrowseNodeSearch',
+                            \&_assert_node_is_numeric);
+
+    my $self = $class->SUPER::new(%options);
+
+    bless $self, $class;   # reconsecrate
+}
+
+##
+## 'PRIVATE' FUNCTIONS
+##
+
+# _assert_node_is_numeric( OPTIONS, KEY )
+#
+# Takes a reference to a hash of OPTIONS and makes sure
+# that the browse node id keyed by KEY is numeric. 
+#
+# Returns if all is well, dies otherwise.
+#
+sub _assert_node_is_numeric {
+    my ($options, $key) = @_;
+
+    die "Browse Node ID must be numeric."
+        if ( $options->{$key} =~ /\D/ );
+}
+
+
+1;
+
+__END__
+
+=head1 NAME
+
+Net::Amazon::Request::BrowseNode - request class for browse node search
+
+=head1 SYNOPSIS
+
+  use Net::Amazon;
+  use Net::Amazon::Request::BrowseNode;
+
+  my $ua = Net::Amazon->new(
+      token       => 'YOUR_AMZN_TOKEN'
+  );
+
+  my $req = Net::Amazon::Request::BrowseNode->new( 
+      browsenode  => 30,
+      mode     => 'books'
+  );
+
+  # Response is of type Net::Amazon::Response::BrowseNode
+  my $resp = $ua->request($req);
+
+=head1 DESCRIPTION
+
+C<Net::Amazon::Request::BrowseNode> is a class used to submit node search
+requests to the Amazon web service.
+
+The node to search for is specified in the C<browsenode> parameter. The
+browse node ID is a number that corresponds to a general subject area 
+of Amazon.com.
+
+To find browse node IDs, the best way is to visit the "browse" area 
+of the various product lines at Amazon.com. When you find a subject area 
+that you would like to generate XML for, look at the web page URL. The 
+browse ID should appear after the string "/tg/browse/-/". Here are some 
+examples of URLs that contain browse IDs:
+
+=over 8
+
+http://www.amazon.com/exec/obidos/tg/browse/-/30 
+(In this example, the browse ID = 30)
+
+http://www.amazon.com/exec/obidos/tg/browse/-/467970 
+(In this example, the browse ID = 467970)
+
+http://www.amazon.com/exec/obidos/tg/browse/-/602314 
+(In this example, the browse ID = 60231
+
+=back
+
+Please be aware that some nodes cannot be used with a
+BrowseNodeSearch. (The vast majority of them can, but you
+may run across a few that simply will not work). It is also
+important to point out that from time to time, some browse
+nodes are deprecated or are changed without notice.
+
+The catalog to search in is specified in the C<mode> parameter,
+typical values are C<books>, C<music>, C<classical> or C<electronics>.
+
+An optional C<keywords> parameter may be added to filter the results by that keyword.
+
+Upon success, the responses' C<properties()> method will return a list of
+C<Net::Amazon::Properties::*> objects.
+
+=head2 METHODS
+
+=over 4
+
+=item new( browsenode => $nodeID, mode => $mode [, keywords => $keywords] )
+
+Constructs a new C<Net::Amazon::Request::BrowseNode> object, used to query
+the Amazon web service for items in a particular category (node) in the 
+mode (catalog) specified.
+
+=back
+
+Check L<Net::Amazon::Request> for common request parameters not listed here.
+
+=head1 AUTHOR
+
+Net::Amazon framework by Mike Schilli, E<lt>m at perlmeister.comE<gt>
+
+BrowseNode.pm by Jackie Hamilton, E<lt>kira at cgi101.comE<gt>
+
+=head1 LICENSE
+
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself. 
+
+=cut

Added: packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/Exchange.pm
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/Exchange.pm	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/Exchange.pm	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,91 @@
+######################################################################
+package Net::Amazon::Request::Exchange;
+######################################################################
+use warnings;
+use strict;
+use base qw(Net::Amazon::Request);
+
+##################################################
+sub new {
+##################################################
+    my($class, %options) = @_;
+
+   if(exists $options{exchange}) {
+       $options{ExchangeSearch} = $options{exchange};
+       delete $options{exchange};
+       $options{type} = "lite";
+       $options{mode} = "";
+  } else {
+      die "Mandatory parameter 'exchange' not defined";
+  }
+
+#    if(!exists $options{exchange}) {
+#        die "Mandatory parameter 'exchange' not defined";
+#    }
+
+   my $self = $class->SUPER::new(%options);
+
+   bless $self, $class;   # reconsecrate
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Net::Amazon::Request::Exchange - Class for submitting Exchange requests
+
+=head1 SYNOPSIS
+
+  use Net::Amazon;
+  use Net::Amazon::Request::Exchange;
+
+  my $ua = Net::Amazon->new(
+      token       => 'YOUR_AMZN_TOKEN'
+  );
+
+  my $req = Net::Amazon::Request::Exchange->new( 
+      exchange  => 'Y04Y3424291Y2398445'
+  );
+
+    # Response is of type Net::Amazon::Response::Seller
+  my $resp = $ua->request($req);
+
+=head1 DESCRIPTION
+
+C<Net::Amazon::Request::Exchange> is a class used to submit Exchange search
+requests to the Amazon web service. Exchange requests send an item's 
+exchange ID and retrieve a description of the item, offered by a third
+party seller on Amazon.
+
+Upon success, the responses' C<result()> method will return a single
+C<Net::Amazon::Result::Seller::Listing> object.
+
+Check L<Net::Amazon::Request> for common request parameters not listed here.
+
+=head2 METHODS
+
+=over 4
+
+=item new( exchange => $exchange_id )
+
+Constructs a new C<Net::Amazon::Request::Exchange> object, used to query
+the Amazon web service with the given seller id.
+
+=back
+
+=head1 SEE ALSO
+
+=head1 AUTHOR
+
+Mike Schilli, E<lt>m at perlmeister.comE<gt>
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright 2005 by Mike Schilli E<lt>m at perlmeister.comE<gt>
+
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself. 
+
+=cut

Added: packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/Keyword.pm
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/Keyword.pm	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/Keyword.pm	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,90 @@
+######################################################################
+package Net::Amazon::Request::Keyword;
+######################################################################
+use warnings;
+use strict;
+use base qw(Net::Amazon::Request);
+
+##################################################
+sub new {
+##################################################
+    my($class, %options) = @_;
+
+    $class->_assert_options_defined(\%options, 
+                                    qw(keyword mode));
+
+    $class->_convert_option(\%options,
+                            'keyword',
+                            'KeywordSearch');
+
+    my $self = $class->SUPER::new(%options);
+
+    bless $self, $class;   # reconsecrate
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Net::Amazon::Request::Keyword - request class for keyword search
+
+=head1 SYNOPSIS
+
+  use Net::Amazon;
+  use Net::Amazon::Request::Keyword;
+
+  my $ua = Net::Amazon->new(
+      token       => 'YOUR_AMZN_TOKEN'
+  );
+
+  my $req = Net::Amazon::Request::Keyword->new( 
+      keyword  => 'Zwan',
+      mode     => 'books'
+  );
+
+    # Response is of type Net::Amazon::Response::Keyword
+  my $resp = $ua->request($req);
+
+=head1 DESCRIPTION
+
+C<Net::Amazon::Request::Keyword> is a class used to submit keyword search
+requests to the Amazon web service.
+
+The keyword to search for is specified in the C<keyword> parameter.
+
+The catalog to search in is specified in the C<mode> parameter,
+typical values are C<books>, C<music>, C<classical> or C<electronics>.
+
+Upon success, the responses' C<properties()> method will return a list of
+C<Net::Amazon::Property::*> objects.
+
+=head2 METHODS
+
+=over 4
+
+=item new( keyword => $keyword, mode => $mode )
+
+Constructs a new C<Net::Amazon::Request::Keyword> object, used to query
+the Amazon web service for items matching a given keyword in the 
+mode (catalog) specified.
+
+=back
+
+Check L<Net::Amazon::Request> for common request parameters not listed here.
+
+=head1 SEE ALSO
+
+=head1 AUTHOR
+
+Mike Schilli, E<lt>m at perlmeister.comE<gt>
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright 2003 by Mike Schilli E<lt>m at perlmeister.comE<gt>
+
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself. 
+
+=cut

Added: packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/Manufacturer.pm
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/Manufacturer.pm	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/Manufacturer.pm	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,78 @@
+######################################
+package Net::Amazon::Request::Manufacturer;
+######################################
+use warnings;
+use strict;
+use base qw(Net::Amazon::Request);
+
+######################################
+sub new {
+######################################
+   my($class, %options) = @_;
+
+   $class->_assert_options_defined(\%options,
+                                   'manufacturer');
+
+   $class->_convert_option(\%options,
+                           'manufacturer',
+                           'ManufacturerSearch');
+
+   my $self = $class->SUPER::new(%options);
+
+   bless $self, $class;   # reconsecrate
+}
+1;
+
+__END__
+
+=head1 NAME
+
+Net::Amazon::Request::Manufacturer - Class for submitting Manufacturer requests
+
+=head1 SYNOPSIS
+
+  use Net::Amazon;
+  use Net::Amazon::Request::Manufacturer;
+
+  my $ua = Net::Amazon->new(
+      token       => 'YOUR_AMZN_TOKEN'
+  );
+
+  my $req = Net::Amazon::Request::Manufacturer->new( 
+      manufacturer  => 'Disney'
+  );
+
+    # Response is of type Net::Amazon::Response::Manufacturer
+  my $resp = $ua->request($req);
+
+=head1 DESCRIPTION
+
+C<Net::Amazon::Request::Manufacturer> is a class used to submit 
+searches for items made by a given manufacturer.
+
+The manufacturer to search for is specified in the C<manufacturer> parameter.
+
+Upon success, the responses' C<properties()> method will return one
+or more C<Net::Amazon::Property::*> objects.
+
+=head2 METHODS
+
+=over 4
+
+=item new( manufacturer => $manufacturer )
+
+Constructs a new C<Net::Amazon::Request::Manufacturer> object, used to query
+the Amazon web service for an item with the specified manufacturer name.
+
+=back
+
+Check L<Net::Amazon::Request> for common request parameters not listed here.
+
+=head1 SEE ALSO
+
+=head1 AUTHORS
+
+Bill Fitzpatrick
+Mike Schilli, E<lt>m at perlmeister.comE<gt>
+
+=cut

Added: packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/Power.pm
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/Power.pm	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/Power.pm	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,95 @@
+######################################################################
+package Net::Amazon::Request::Power;
+######################################################################
+use warnings;
+use strict;
+use base qw(Net::Amazon::Request);
+
+##################################################
+sub new {
+##################################################
+    my($class, %options) = @_;
+
+    $class->_assert_options_defined(\%options, 
+                                    qw(power mode));
+
+    $class->_convert_option(\%options,
+                            'power',
+                            'PowerSearch');
+
+    my $self = $class->SUPER::new(%options);
+
+    bless $self, $class;   # reconsecrate
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Net::Amazon::Request::Power - request class for 'Power Search'
+
+=head1 SYNOPSIS
+
+  use Net::Amazon;
+  use Net::Amazon::Request::Power;
+
+  my $ua = Net::Amazon->new(
+      token       => 'YOUR_AMZN_TOKEN'
+  );
+
+  my $req = Net::Amazon::Request::Power->new( 
+      power => 'subject: perl and author: schwartz',
+      mode  => 'books',
+  );
+
+    # Response is of type Net::Amazon::Response::Power
+  my $resp = $ua->request($req);
+
+=head1 DESCRIPTION
+
+C<Net::Amazon::Request::Power> is a class used to request
+so-called I<Power Searches> from the Amazon web service.
+
+The C<power> parameter specifies the power search string, C<mode>
+defines which properties to look for.
+
+Upon success, the response's C<properties()> method will return a list
+of C<Net::Amazon::Property::*> objects.
+
+=head2 METHODS
+
+=over 4
+
+=item new(power => $search_string, mode => $property)
+
+Constructs a new C<Net::Amazon::Request::Power> object. C<$property>
+is typically C<"books">. Examples for C<$search_string> are:
+
+    author: schwartz
+
+    author: schwartz and pubdate: after 10-2002
+
+    subject: perl and (objects or object-oriented)
+
+    keywords: "high tech*" and not fiction and pubdate: during 1999
+
+    power "author: randal schwartz and publisher: Addison Wesley"
+ 
+    author: randal schwartz and title: object books
+
+See the "Amazon Web Services 2.1 API and Integration Guide" for details.
+
+=back
+
+Check L<Net::Amazon::Request> for common request parameters not listed here.
+
+=head1 SEE ALSO
+
+=head1 AUTHORS
+
+Martin Streicher, E<lt>martin.streicher at apress.comE<gt>
+Mike Schilli, E<lt>m at perlmeister.comE<gt>
+
+=cut

Added: packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/Seller.pm
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/Seller.pm	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/Seller.pm	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,84 @@
+######################################################################
+package Net::Amazon::Request::Seller;
+######################################################################
+use base qw(Net::Amazon::Request);
+
+##################################################
+sub new {
+##################################################
+    my($class, %options) = @_;
+
+    if(exists $options{seller}) {
+        $options{SellerSearch} = $options{seller};
+        delete $options{seller};
+    } else {
+        die "Mandatory parameter 'seller' not defined";
+    }
+
+    my $self = $class->SUPER::new(%options);
+
+    bless $self, $class;   # reconsecrate
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Net::Amazon::Request::Seller - Class for submitting Seller requests
+
+=head1 SYNOPSIS
+
+  use Net::Amazon;
+  use Net::Amazon::Request::Seller;
+
+  my $ua = Net::Amazon->new(
+      token       => 'YOUR_AMZN_TOKEN'
+  );
+
+  my $req = Net::Amazon::Request::Seller->new( 
+      seller  => 'A2GXAGU54VOP7'
+  );
+
+    # Response is of type Net::Amazon::Response::Seller
+  my $resp = $ua->request($req);
+
+=head1 DESCRIPTION
+
+C<Net::Amazon::Request::Seller> is a class used to submit Seller search
+requests to the Amazon web service.
+
+The seller to search for is specified in the C<seller> parameter, which
+contains the seller's ID (not the seller's nickname!).
+
+Upon success, the responses' C<result()> method will return a single
+C<Net::Amazon::Result::Seller> object.
+
+Check L<Net::Amazon::Request> for common request parameters not listed here.
+
+=head2 METHODS
+
+=over 4
+
+=item new( seller => $seller_id )
+
+Constructs a new C<Net::Amazon::Request::Seller> object, used to query
+the Amazon web service with the given seller id.
+
+=back
+
+=head1 SEE ALSO
+
+=head1 AUTHOR
+
+Mike Schilli, E<lt>m at perlmeister.comE<gt>
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright 2004 by Mike Schilli E<lt>m at perlmeister.comE<gt>
+
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself. 
+
+=cut

Added: packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/Similar.pm
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/Similar.pm	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/Similar.pm	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,95 @@
+######################################################################
+package Net::Amazon::Request::Similar;
+######################################################################
+use warnings;
+use strict;
+use base qw(Net::Amazon::Request);
+
+our $AMZN_XML_URL     = "http://xml.amazon.com/onca/xml3";
+
+##################################################
+sub amzn_xml_url {
+##################################################
+    return $AMZN_XML_URL;
+}
+
+##################################################
+sub new {
+##################################################
+    my($class, %options) = @_;
+
+    # For backwards compatibility
+    $class->_convert_option(\%options, 'asin', 'similar');
+
+    $class->_assert_options_defined(\%options, 'similar');
+
+    $class->_convert_option(\%options,
+                            'similar',
+                            'SimilaritySearch');
+
+    my $self = $class->SUPER::new(%options);
+
+    bless $self, $class;   # reconsecrate
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Net::Amazon::Request::Similar - request class for 'Similarities Search'
+
+=head1 SYNOPSIS
+
+  use Net::Amazon;
+  use Net::Amazon::Request::Similar;
+
+  my $ua = Net::Amazon->new(
+      token       => 'YOUR_AMZN_TOKEN'
+  );
+
+  my $req = Net::Amazon::Request::Similar->new( 
+      similar => 'B00005B6TL',
+  );
+
+    # Response is of type Net::Amazon::Response::Similar
+  my $resp = $ua->request($req);
+
+=head1 DESCRIPTION
+
+C<Net::Amazon::Request::Similar> is a class used to request
+so-called I<Similarities Searches> from the Amazon web service.
+
+The C<asin> parameter specifies the ASIN of the item which you want
+to get similar items for.
+
+Upon success, the response's C<properties()> method will return a list
+of C<Net::Amazon::Property::*> objects.
+
+=head2 METHODS
+
+=over 4
+
+=item new(similar => $asin)
+
+Constructs a new C<Net::Amazon::Request::Similar> object.
+
+=back
+
+Check L<Net::Amazon::Request> for common request parameters not listed here.
+
+=head1 SEE ALSO
+
+=head1 AUTHOR
+
+Mike Schilli, E<lt>m at perlmeister.comE<gt>
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright 2003 by Mike Schilli E<lt>m at perlmeister.comE<gt>
+
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself. 
+
+=cut

Added: packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/Sort.pm
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/Sort.pm	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/Sort.pm	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,246 @@
+=pod
+
+=head1 SORT TYPES
+
+Search results can be sorted in various ways, depending on the type of
+product returned by the search.  If a sort parameter isn't specified in
+the request, the results will be ordered as if the +salesrank value is
+specified.
+
+=head2 Sorting Books Results
+
+   +---------------------------------------------------+
+   | Sort Type               | Value                   |
+   |-------------------------+-------------------------+
+   | Featured Items          | +pmrank                 |
+   |-------------------------+-------------------------+
+   | Bestselling             | +salesrank              |
+   |-------------------------+-------------------------+
+   | Average Customer Review | +reviewrank             |
+   |-------------------------+-------------------------+
+   | Price (Low to High)     | +pricerank              |
+   |-------------------------+-------------------------+
+   | Price (High to Low)     | +inverse-pricerank      |
+   |-------------------------+-------------------------+
+   | Publication Date        | +daterank               |
+   |-------------------------+-------------------------+
+   | Alphabetical (A-Z)      | +titlerank              |
+   |-------------------------+-------------------------+
+   | Alphabetical (Z-A)      | -titlerank              |
+   +---------------------------------------------------+
+
+=head2 Sorting Software Results
+
+   +---------------------------------------------------+
+   | Sort Type               | Value                   |
+   |-------------------------+-------------------------+
+   | Featured items          | +pmrank                 |
+   |-------------------------+-------------------------+
+   | Bestselling             | +salesrank              |
+   |-------------------------+-------------------------+
+   | Alphabetical            | +titlerank              |
+   |-------------------------+-------------------------+
+   | Price (High to Low)     | +price                  |
+   |-------------------------+-------------------------+
+   | Price (Low to High)     | -price                  |
+   +---------------------------------------------------+
+
+=head2 Sorting Outdoor Living Results
+
+   +---------------------------------------------------+
+   | Sort Type               | Value                   |
+   |-------------------------+-------------------------+
+   | Featured Items          | +psrank                 |
+   |-------------------------+-------------------------+
+   | Bestselling             | +salesrank              |
+   |-------------------------+-------------------------+
+   | Alphabetical (A-Z)      | +titlerank              |
+   |-------------------------+-------------------------+
+   | Alphabetical (Z-A)      | -titlerank              |
+   |-------------------------+-------------------------+
+   | Manufacturer (A-Z)      | +manufactrank           |
+   |-------------------------+-------------------------+
+   | Manufacturer (Z-A)      | -manufactrank           |
+   |-------------------------+-------------------------+
+   | Price (Low to High)     | +price                  |
+   |-------------------------+-------------------------+
+   | Price (High to Low)     | -price                  |
+   +---------------------------------------------------+
+
+=head2 Sorting Tools Results
+
+   +---------------------------------------------------+
+   | Sort Type               | Value                   |
+   |-------------------------+-------------------------+
+   | Featured Items          | +psrank                 |
+   |-------------------------+-------------------------+
+   | Bestselling             | +salesrank              |
+   |-------------------------+-------------------------+
+   | Alphabetical (A-Z)      | +titlerank              |
+   |-------------------------+-------------------------+
+   | Alphabetical (Z-A)      | -titlerank              |
+   |-------------------------+-------------------------+
+   | Manufacturer (A-Z)      | +manufactrank           |
+   |-------------------------+-------------------------+
+   | Manufacturer (Z-A)      | -manufactrank           |
+   |-------------------------+-------------------------+
+   | Price (Low to High)     | +price                  |
+   |-------------------------+-------------------------+
+   | Price (High to Low)     | -price                  |
+   +---------------------------------------------------+
+
+=head2 Sorting Camera and Photo Results
+
+   +---------------------------------------------------+
+   | Sort Type               | Value                   |
+   |-------------------------+-------------------------+
+   | Featured Items          | +pmrank                 |
+   |-------------------------+-------------------------+
+   | Bestselling             | +salesrank              |
+   |-------------------------+-------------------------+
+   | Alphabetical (A-Z)      | +titlerank              |
+   |-------------------------+-------------------------+
+   | Alphabetical (Z-A)      | -titlerank              |
+   +---------------------------------------------------+
+
+=head2 Sorting Computers Results
+
+   +---------------------------------------------------+
+   | Sort Type               | Value                   |
+   |-------------------------+-------------------------+
+   | Featured Items          | +psrank                 |
+   |-------------------------+-------------------------+
+   | Bestselling             | +salesrank              |
+   |-------------------------+-------------------------+
+   | Alphabetical (A-Z)      | +titlerank              |
+   |-------------------------+-------------------------+
+   | Alphabetical (Z-A)      | -titlerank              |
+   +---------------------------------------------------+
+
+=head2 Sorting Video Games Results
+
+   +---------------------------------------------------+
+   | Sort Type               | Value                   |
+   |-------------------------+-------------------------+
+   | Featured Items          | +pmrank                 |
+   |-------------------------+-------------------------+
+   | Bestselling             | +salesrank              |
+   |-------------------------+-------------------------+
+   | Alphabetical            | +titlerank              |
+   |-------------------------+-------------------------+
+   | Price (Low to High)     | +price                  |
+   |-------------------------+-------------------------+
+   | Price (High to Low)     | -price                  |
+   +---------------------------------------------------+
+
+=head2 Sorting Music Results
+
+   +---------------------------------------------------+
+   | Sort Type               | Value                   |
+   |-------------------------+-------------------------+
+   | Featured Items          | +psrank                 |
+   |-------------------------+-------------------------+
+   | Bestselling             | +salesrank              |
+   |-------------------------+-------------------------+
+   | Artist Name             | +artistrank             |
+   |-------------------------+-------------------------+
+   | Original Release Date   | +orig-rel-date          |
+   |-------------------------+-------------------------+
+   | Alphabetical            | +titlerank              |
+   +---------------------------------------------------+
+
+=head2 Sorting Office Products Results
+
+   +---------------------------------------------------+
+   | Sort Type               | Value                   |
+   |-------------------------+-------------------------+
+   | Featured Items          | +pmrank                 |
+   |-------------------------+-------------------------+
+   | Bestselling             | +salesrank              |
+   |-------------------------+-------------------------+
+   | Alphabetical (A-Z)      | +titlerank              |
+   |-------------------------+-------------------------+
+   | Alphabetical (Z-A)      | -titlerank              |
+   |-------------------------+-------------------------+
+   | Price (Low to High)     | +price                  |
+   |-------------------------+-------------------------+
+   | Price (High to Low)     | -price                  |
+   |-------------------------+-------------------------+
+   | Review                  | +reviewrank             |
+   +---------------------------------------------------+
+
+=head2 Sorting Video Results
+
+   +---------------------------------------------------+
+   | Sort Type               | Value                   |
+   |-------------------------+-------------------------+
+   | Featured Items          | +psrank                 |
+   |-------------------------+-------------------------+
+   | Bestselling             | +salesrank              |
+   |-------------------------+-------------------------+
+   | Alphabetical            | +titlerank              |
+   +---------------------------------------------------+
+
+=head2 Sorting Electronics Results
+
+   +---------------------------------------------------+
+   | Type                    | Value                   |
+   |-------------------------+-------------------------+
+   | Featured Items          | +pmrank                 |
+   |-------------------------+-------------------------+
+   | Bestselling             | +salesrank              |
+   |-------------------------+-------------------------+
+   | Alphabetical            | +titlerank              |
+   |-------------------------+-------------------------+
+   | Review                  | +reviewrank             |
+   +---------------------------------------------------+
+
+=head2 Sorting DVDs Results
+
+   +---------------------------------------------------+
+   | Type                    | Value                   |
+   |-------------------------+-------------------------+
+   | Bestselling             | +salesrank              |
+   |-------------------------+-------------------------+
+   | Alphabetical            | +titlerank              |
+   +---------------------------------------------------+
+
+=head2 Sorting Kitchen Results
+
+   +---------------------------------------------------+
+   | Type                    | Value                   |
+   |-------------------------+-------------------------+
+   | Featured Items          | +pmrank                 |
+   |-------------------------+-------------------------+
+   | Bestselling             | +salesrank              |
+   |-------------------------+-------------------------+
+   | Alphabetical (A-Z)      | +titlerank              |
+   |-------------------------+-------------------------+
+   | Alphabetical (Z-A)      | -titlerank              |
+   |-------------------------+-------------------------+
+   | Manufacturer (A-Z)      | +manufactrank           |
+   |-------------------------+-------------------------+
+   | Manufacturer (Z-A)      | -manufactrank           |
+   |-------------------------+-------------------------+
+   | Price (Low to High)     | +price                  |
+   |-------------------------+-------------------------+
+   | Price (High to Low)     | -price                  |
+   +---------------------------------------------------+
+
+=head2 Sorting Toys Results
+
+   +---------------------------------------------------+
+   |  Type                   | Value                   |
+   |-------------------------+-------------------------+
+   | Featured Items          | +pmrank                 |
+   |-------------------------+-------------------------+
+   | Bestselling             | +salesrank              |
+   |-------------------------+-------------------------+
+   | Price (Low to High)     | +pricerank              |
+   |-------------------------+-------------------------+
+   | Price (High to Low)     | +inverse-pricerank      |
+   |-------------------------+-------------------------+
+   | Alphabetical (A-Z)      | +titlerank              |
+   +---------------------------------------------------+
+
+=cut

Added: packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/TextStream.pm
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/TextStream.pm	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/TextStream.pm	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,76 @@
+######################################################################
+package Net::Amazon::Request::TextStream;
+######################################################################
+use warnings;
+use strict;
+use base qw(Net::Amazon::Request);
+
+##################################################
+sub new {
+##################################################
+    my($class, %options) = @_;
+
+    $class->_assert_options_defined(\%options,
+                                    'textstream');
+
+    $class->_convert_option(\%options,
+                            'textstream',
+                            'TextStreamSearch');
+
+    my $self = $class->SUPER::new(%options);
+
+    bless $self, $class;   # reconsecrate
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Net::Amazon::Request::TextStream - request class for text stream search
+
+=head1 SYNOPSIS
+
+  use Net::Amazon;
+  use Net::Amazon::Request::TextStream;
+
+  my $ua = Net::Amazon->new(
+      token       => 'YOUR_AMZN_TOKEN'
+  );
+
+  my $req = Net::Amazon::Request::TextStream->new( 
+      textstream => 'Here is some text that mentions the Rolling Stones.',
+  );
+
+  # Response is of type Net::Amazon::Response::TextStream
+  my $resp = $ua->request($req);
+
+=head1 DESCRIPTION
+
+C<Net::Amazon::Request::TextStream> is a class used to perform a search on
+a block of text. Amazon extracts keywords from the given block of text,
+but note that conjunctions and helper words, such as "and", "or", "the",
+etc. are not excluded, so strip them out yourself if need be.
+
+TextStream searching is only available for the US service.
+
+Upon success, the response's C<properties()> method will return a list
+of C<Net::Amazon::Property::*> objects.
+
+=head2 METHODS
+
+=over 4
+
+=item new(textstream => $text)
+
+Constructs a new C<Net::Amazon::Request::TextStream> object, used to query
+the Amazon web service with a block of text.
+
+=back
+
+Check L<Net::Amazon::Request> for common request parameters not listed here.
+
+=head1 SEE ALSO
+
+=cut

Added: packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/UPC.pm
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/UPC.pm	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/UPC.pm	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,94 @@
+######################################################################
+package Net::Amazon::Request::UPC;
+######################################################################
+use warnings;
+use strict;
+use base qw(Net::Amazon::Request);
+
+##################################################
+sub new {
+##################################################
+    my($class, %options) = @_;
+
+    $class->_assert_options_defined(\%options, 'upc');
+
+    $class->_convert_option(\%options, 
+                            'upc', 
+                            'UpcSearch');
+
+    my $self = $class->SUPER::new(%options);
+
+    bless $self, $class;   # reconsecrate
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Net::Amazon::Request::UPC - request class for UPC search
+
+=head1 SYNOPSIS
+
+  use Net::Amazon;
+  use Net::Amazon::Request::UPC;
+
+  my $ua = Net::Amazon->new(
+      token       => 'YOUR_AMZN_TOKEN'
+  );
+
+  my $req = Net::Amazon::Request::UPC->new( 
+      upc  => '724381198421',
+      mode => 'music',        
+
+  );
+
+    # Response is of type Net::Amazon::Response::UPC
+  my $resp = $ua->request($req);
+
+=head1 DESCRIPTION
+
+C<Net::Amazon::Request::UPC> is a class used to submit UPC (product barcode) 
+search requests to the Amazon web service.
+
+The UPC number to search for is specified in the C<upc> parameter.
+It currently works with the following values of the C<mode> parameter:
+C<music>, 
+C<classical>,
+C<software>,
+C<dvd>, 
+C<video>,
+C<vhs>, 
+C<electronics>,
+C<pc-hardware>, and 
+C<photo>.
+
+Upon success, the response's C<properties()> method will return a single
+C<Net::Amazon::Property::Music> object.
+
+=head2 METHODS
+
+=over 4
+
+=item new(upc => $upc)
+
+Constructs a new C<Net::Amazon::Request::UPC> object, used to query
+the Amazon web service for an item with the given UPC number.
+
+=back
+
+=head1 SEE ALSO
+
+=head1 AUTHOR
+
+Mike Schilli, E<lt>m at perlmeister.comE<gt>
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright 2003 by Mike Schilli E<lt>m at perlmeister.comE<gt>
+
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself. 
+
+=cut

Added: packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/Wishlist.pm
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/Wishlist.pm	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request/Wishlist.pm	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,89 @@
+######################################################################
+package Net::Amazon::Request::Wishlist;
+######################################################################
+use warnings;
+use strict;
+use base qw(Net::Amazon::Request);
+
+##################################################
+sub new {
+##################################################
+    my($class, %options) = @_;
+
+    # For backwards compatibility:
+    $class->_convert_option(\%options, 'id', 'wishlist');
+
+    $class->_assert_options_defined(\%options, 'wishlist');
+
+    $class->_convert_option(\%options,
+                            'wishlist',
+                            'WishlistSearch');
+
+    my $self = $class->SUPER::new(%options);
+
+    bless $self, $class;   # reconsecrate
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Net::Amazon::Request::Wishlist - request class for wishlist search
+
+=head1 SYNOPSIS
+
+  use Net::Amazon;
+  use Net::Amazon::Request::Wishlist;
+
+  my $ua = Net::Amazon->new(
+      token       => 'YOUR_AMZN_TOKEN'
+  );
+
+  my $req = Net::Amazon::Request::Wishlist->new( 
+      wishlist => '1XL5DWOUFMFVJ',
+  );
+
+    # Response is of type Net::Amazon::Response::Wishlist
+  my $resp = $ua->request($req);
+
+=head1 DESCRIPTION
+
+C<Net::Amazon::Request::Wishlist> is a class used to request
+a specified wishlist.
+
+The wishlist ID (can be found as parameters in URLs when a customer's
+Amazon wishlist is being pulled up) is specified in the C<id> parameter.
+
+Upon success, the response's C<properties()> method will return a list
+of C<Net::Amazon::Property::*> objects.
+
+=head2 METHODS
+
+=over 4
+
+=item new(wishlist => $id)
+
+Constructs a new C<Net::Amazon::Request::Wishlist> object, used to query
+the Amazon web service for a specific wishlist, identified by the wishlist
+ID.
+
+=back
+
+Check L<Net::Amazon::Request> for common request parameters not listed here.
+
+=head1 SEE ALSO
+
+=head1 AUTHOR
+
+Mike Schilli, E<lt>m at perlmeister.comE<gt>
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright 2003 by Mike Schilli E<lt>m at perlmeister.comE<gt>
+
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself. 
+
+=cut

Added: packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request.pm
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request.pm	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Request.pm	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,221 @@
+######################################################################
+package Net::Amazon::Request;
+######################################################################
+
+use warnings;
+use strict;
+
+use constant DEFAULT_MODE          => 'books';
+use constant DEFAULT_TYPE          => 'heavy';
+use constant DEFAULT_PAGE_COUNT    => 1;
+use constant DEFAULT_FORMAT        => 'xml';
+use constant DEFAULT_SORT_CRITERIA => '+salesrank';
+
+use constant VALID_TYPES => { map { $_ => 1 } qw(heavy lite) };
+
+our $AMZN_XML_URL  = "http://xml.amazon.com/onca/xml3";
+
+##################################################
+sub amzn_xml_url {
+##################################################
+    return $AMZN_XML_URL;
+}
+
+##################################################
+sub new {
+##################################################
+    my($class, %options) = @_;
+
+    my $self = {
+        mode       => DEFAULT_MODE,
+        type       => DEFAULT_TYPE,
+        page       => DEFAULT_PAGE_COUNT,
+        f          => DEFAULT_FORMAT,
+        sort       => DEFAULT_SORT_CRITERIA,
+        %options,
+    };
+
+    die "Unknown type in ", __PACKAGE__, " constructor: ",
+        $self->{type} unless exists VALID_TYPES->{$self->{type}};
+
+    bless $self, $class;
+}
+
+##################################################
+sub params {
+##################################################
+    my($self) = @_;
+
+    return(%$self);
+}
+
+##################################################
+# Figure out the Response class to a given Request
+# class. To be used by sub classes.
+##################################################
+sub response_class {
+##################################################
+    my($self) = @_;
+
+    my $response_class = ref($self);
+    $response_class =~ s/Request/Response/;
+    return $response_class;
+}
+
+##
+## 'PRIVATE' METHODS
+##
+
+# CLASS->_convert_option( OPTIONS, ORIGINAL, TARGET [, CALLBACK] )
+#
+# Takes a reference to a hash of OPTIONS and renames the
+# ORIGINAL key name to the TARGET key name. If the optional
+# CALLBACK subroutine reference is defined, that subroutine
+# is invoked with two arguments:
+#
+#     CALLBACK->( OPTIONS, TARGET )
+#
+# The result of the CALLBACK's execution is then returned to
+# the caller. No assumptions are made about what the CALLBACK
+# should return (or even *if* is should return)--that's the
+# caller's responsibility.
+#
+# Returns 1 in the absensence of a CALLBACK.
+#
+sub _convert_option {
+    my ($class, $options, $original, $target, $callback) = @_;
+
+    if ( exists $options->{$original} ) {
+        $options->{$target} = $options->{$original};
+        delete $options->{$original};
+    }
+
+    return 1 unless ( $callback );
+
+    # The key name is explicitly passed-in so that the caller doesn't
+    # have think "Hrmm..  now which key am I working on, the original
+    # or the target key?" Confusion is bad.
+    return $callback->($options, $target);
+}
+
+# CLASS->_assert_options_defined( OPTIONS, KEYS )
+#
+# Takes a reference to a hash of OPTIONS and a list of
+# one or more KEYS. Tests to see if each key in KEYS
+# has a defined value. Calls die() upon the first
+# missing key. Otherwise, returns undef.
+#
+sub _assert_options_defined {
+    my ($class, $options, @keys) = @_;
+    
+    foreach my $key ( @keys ) {
+        die "Mandatory parameter '$key' not defined"
+            unless ( defined $options->{$key} );
+    }
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Net::Amazon::Request - Baseclass for requests to Amazon's web service
+
+=head1 SYNOPSIS
+
+    my $req = Net::Amazon::Request::XXX->new(
+                     [ type  => 'heavy', ]
+                     [ page  => $start_page, ]
+                     [ mode  => $mode, ]
+                     [ offer => 'All', ]
+                     [ sort => $sort_type, ]
+    );
+
+=head1 DESCRIPTION
+
+Don't use this class directly, use derived classes 
+(like C<Net::Amazon::Request::ASIN>, C<Net::Amazon::Request::Wishlist>
+etc.) instead to specify the type of request and its parameters.
+
+However, there's a bunch of parameters to the constructor
+that all request types have in common, here they are:
+
+=over 4
+
+=item type
+
+Defaults to C<heavy>, but can be set to C<lite> if no reviews etc.
+on a product are wanted. Some fields (e.g. C<isbn>) are not going to be 
+available in C<lite> mode, though.
+
+=item mode
+
+Defaults to C<books>, but can be set to other catalog values.
+
+=item page
+
+Defaults to C<1>, but can be set to a different number to 
+start with a different result page. Used in conjunction with the
+C<max_pages> parameter of the C<Net::Amazon> object. C<page> is the
+offset, C<max_pages> is the maximum number of pages pulled in starting
+at C<page>.
+
+=item sort
+
+Defaults to C<+salesrank>, but search results can be sorted in various
+ways, depending on the type of product returned by the search.  Search
+results may be sorted by the following criteria:
+
+=over 8
+
+=item *
+Featured Items                                                           
+
+=item *
+Bestselling                                                              
+
+=item *
+Alphabetical (A-Z and Z-A)                                               
+
+=item *
+Price (High to Low and Low to High)                                      
+
+=item *
+Publication or Release Date                                              
+
+=item *
+Manufacturer                                                             
+
+=item *
+Average Customer Review                                                  
+
+=item *
+Artist Name                                   
+
+=back
+
+Consult L<Net::Amazon::Request::Sort> for details.
+
+=item offer
+
+To receive values for the fields
+C<CollectibleCount>, C<NumberOfOfferings>, C<UsedCount>, 
+specify C<offer =E<gt> "All">.
+
+=back
+
+=head1 SEE ALSO
+
+=head1 AUTHOR
+
+Mike Schilli, E<lt>m at perlmeister.comE<gt>
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright 2003 by Mike Schilli E<lt>m at perlmeister.comE<gt>
+
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself. 
+
+=cut

Added: packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/ASIN.pm
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/ASIN.pm	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/ASIN.pm	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,28 @@
+######################################################################
+package Net::Amazon::Response::ASIN;
+######################################################################
+use warnings;
+use strict;
+use base qw(Net::Amazon::Response);
+
+use Net::Amazon::Property;
+
+##################################################
+sub new {
+##################################################
+    my($class, %options) = @_;
+
+    my $self = $class->SUPER::new(%options);
+
+    bless $self, $class;   # reconsecrate
+}
+
+##################################################
+sub as_string {
+##################################################
+    my($self) = @_;
+
+    return $self->SUPER::list_as_string($self->properties);
+}
+
+1;

Added: packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/Artist.pm
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/Artist.pm	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/Artist.pm	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,29 @@
+######################################################################
+package Net::Amazon::Response::Artist;
+######################################################################
+use warnings;
+use strict;
+use base qw(Net::Amazon::Response);
+
+use Net::Amazon::Property;
+use Data::Dumper;
+
+##################################################
+sub new {
+##################################################
+    my($class, %options) = @_;
+
+    my $self = $class->SUPER::new(%options);
+
+    bless $self, $class;   # reconsecrate
+}
+
+##################################################
+sub as_string {
+##################################################
+    my($self) = @_;
+
+    return $self->SUPER::list_as_string($self->properties);
+}
+
+1;

Added: packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/Blended.pm
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/Blended.pm	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/Blended.pm	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,73 @@
+######################################################################
+package Net::Amazon::Response::Blended;
+######################################################################
+use warnings;
+use strict;
+use base qw(Net::Amazon::Response);
+
+use Net::Amazon::Property;
+use XML::Simple;
+
+our @FORCE_ARRAY_FIELDS = qw(ProductLine);
+
+##################################################
+sub new {
+##################################################
+    my($class, %options) = @_;
+
+    my $self = $class->SUPER::new(%options);
+
+    bless $self, $class;   # reconsecrate
+}
+
+##################################################
+sub as_string {
+##################################################
+    my($self) = @_;
+
+    return $self->SUPER::list_as_string($self->properties);
+}
+
+##################################################
+sub xmlref_add {
+##################################################
+    my($self, $xmlref) = @_;
+
+    my $nof_items_added = 0;
+
+    unless(ref($self->{xmlref}) eq "HASH" &&
+           ref($self->{xmlref}->{Details}) eq "ARRAY") {
+        $self->{xmlref}->{Details} = [];
+    }
+
+    if ($xmlref->{ProductLine} && (ref($xmlref->{ProductLine}) eq "ARRAY")) {
+        my @lines = @{$xmlref->{ProductLine}}; # Copy the lines
+            # sort the copies by relevance
+        @lines = sort { $a->{RelevanceRank} <=> $b->{RelevanceRank} } @lines;
+
+        foreach (@lines) {
+              next unless $_->{ProductInfo}->{Details};
+              my $details = $_->{ProductInfo}->{Details};
+              if (ref($details) eq "ARRAY") {
+                  push @{$self->{xmlref}->{Details}}, @$details;
+                  $nof_items_added += scalar @$details;
+              } else {
+                  push @{$self->{xmlref}->{Details}}, $details;
+                  $nof_items_added++;
+              }
+        }
+    }
+
+    return $nof_items_added;
+}
+
+##################################################
+sub xml_parse {
+##################################################
+    my($self, $xml) = @_;
+
+    my $xs = XML::Simple->new();
+    return $xs->XMLin($xml, ForceArray => [ @FORCE_ARRAY_FIELDS ]);
+}
+
+1;

Added: packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/BrowseNode.pm
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/BrowseNode.pm	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/BrowseNode.pm	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,29 @@
+######################################################################
+package Net::Amazon::Response::BrowseNode;
+######################################################################
+use warnings;
+use strict;
+use base qw(Net::Amazon::Response);
+
+use Net::Amazon::Property;
+use Data::Dumper;
+
+##################################################
+sub new {
+##################################################
+    my($class, %options) = @_;
+
+    my $self = $class->SUPER::new(%options);
+
+    bless $self, $class;   # reconsecrate
+}
+
+##################################################
+sub as_string {
+##################################################
+    my($self) = @_;
+
+    return $self->SUPER::list_as_string($self->properties);
+}
+
+1;

Added: packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/Exchange.pm
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/Exchange.pm	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/Exchange.pm	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,81 @@
+######################################################################
+package Net::Amazon::Response::Exchange;
+######################################################################
+use warnings;
+use strict;
+use base qw(Net::Amazon::Response);
+
+use Net::Amazon::Property;
+use Net::Amazon::Result::Seller::Listing;
+use Log::Log4perl qw(:easy);
+
+__PACKAGE__->make_array_accessor($_) for qw(listings);
+
+##################################################
+sub new {
+##################################################
+   my($class, %options) = @_;
+
+   my $self = $class->SUPER::new(%options);
+
+   bless $self, $class;   # reconsecrate
+}
+
+##################################################
+sub result {
+##################################################
+    my($self) = @_;
+
+    if($self->is_success()) {
+        return Net::Amazon::Result::Seller::Listing->new(
+            xmlref => $self->{xmlref}->{ListingProductDetails}->[0],
+        );
+    }
+
+    return undef;
+}
+
+##################################################
+sub as_string {
+##################################################
+   my($self) = @_;
+
+   return "TODO: as_string not defined yet in ", __PACKAGE__;
+}
+
+##################################################
+sub xmlref_add {
+##################################################
+    my($self, $xmlref) = @_;
+
+    my $nof_items_added = 0;
+
+    unless(ref($self->{xmlref}) eq "HASH" &&
+        ref($self->{xmlref}->{ListingProductDetails}) eq "ARRAY") {
+        $self->{xmlref}->{Details} = [];
+    }
+
+    if(ref($xmlref->{ListingProductDetails}) eq "ARRAY") {
+            # Is it an array of items?
+        push @{$self->{xmlref}->{ListingProductDetails}},
+             @{$xmlref->{ListingProductDetails}};
+        $nof_items_added = scalar @{$xmlref->{ListingProductDetails}};
+    } else {
+            # It is a single item
+        push @{$self->{xmlref}->{ListingProductDetails}},
+             $xmlref->{ListingProductDetails};
+        $nof_items_added = 1;
+    }
+
+    return $nof_items_added;
+}
+
+##################################################
+sub properties {
+##################################################
+    my($self) = @_;
+
+    die "properties() not defined in ", __PACKAGE__, ". Use result() instead";
+}
+
+1;

Added: packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/Keyword.pm
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/Keyword.pm	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/Keyword.pm	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,29 @@
+######################################################################
+package Net::Amazon::Response::Keyword;
+######################################################################
+use warnings;
+use strict;
+use base qw(Net::Amazon::Response);
+
+use Net::Amazon::Property;
+use Data::Dumper;
+
+##################################################
+sub new {
+##################################################
+    my($class, %options) = @_;
+
+    my $self = $class->SUPER::new(%options);
+
+    bless $self, $class;   # reconsecrate
+}
+
+##################################################
+sub as_string {
+##################################################
+    my($self) = @_;
+
+    return $self->SUPER::list_as_string($self->properties);
+}
+
+1;

Added: packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/Manufacturer.pm
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/Manufacturer.pm	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/Manufacturer.pm	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,29 @@
+######################################################################
+package Net::Amazon::Response::Manufacturer;
+######################################################################
+use warnings;
+use strict;
+use base qw(Net::Amazon::Response);
+
+use Net::Amazon::Property;
+use Data::Dumper;
+
+##################################################
+sub new {
+##################################################
+    my($class, %options) = @_;
+
+    my $self = $class->SUPER::new(%options);
+
+    bless $self, $class;   # reconsecrate
+}
+
+##################################################
+sub as_string {
+##################################################
+    my($self) = @_;
+
+    return $self->SUPER::list_as_string($self->properties);
+}
+
+1;

Added: packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/Power.pm
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/Power.pm	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/Power.pm	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,28 @@
+######################################################################
+package Net::Amazon::Response::Power;
+######################################################################
+use warnings;
+use strict;
+use base qw(Net::Amazon::Response);
+
+use Net::Amazon::Property;
+
+##################################################
+sub new {
+##################################################
+    my($class, %options) = @_;
+
+    my $self = $class->SUPER::new(%options);
+
+    bless $self, $class;   # reconsecrate
+}
+
+##################################################
+sub as_string {
+##################################################
+    my($self) = @_;
+
+    return $self->SUPER::list_as_string($self->properties);
+}
+
+1;

Added: packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/Seller.pm
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/Seller.pm	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/Seller.pm	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,78 @@
+#############################################
+package Net::Amazon::Response::Seller;
+#############################################
+use base qw(Net::Amazon::Response);
+
+use Net::Amazon::Result::Seller;
+use Data::Dumper;
+use Log::Log4perl qw(:easy);
+
+##############################
+sub new {
+##############################
+    my($class, %options) = @_;
+   
+    my $self = $class->SUPER::new(%options);
+    bless $self, $class;   # reconsecrate
+}
+
+##################################################
+sub result {
+##################################################
+    my($self) = @_;
+
+    if($self->is_success()) {
+        DEBUG "Calling Seller constructor with ", Dumper($self);
+        return Net::Amazon::Result::Seller->new(
+            xmlref => $self->{xmlref}->{SellerSearchDetails}->[0],
+        );
+    }
+
+    return undef;
+}
+
+##################################################
+sub properties {
+##################################################
+    my($self) = @_;
+
+    die "properties() not defined in ", __PACKAGE__, ". Use result() instead";
+}
+
+##################################################
+sub as_string {
+##################################################
+    my($self) = @_;
+
+    return $self->result()->as_string();
+}
+
+##################################################
+sub xmlref_add {
+##################################################
+    my($self, $xmlref) = @_;
+
+    my $nof_items_added = 0;
+
+    unless(ref($self->{xmlref}) eq "HASH" &&
+        ref($self->{xmlref}->{SellerSearchDetails}) eq "ARRAY") {
+        $self->{xmlref}->{Details} = [];
+    }
+
+    if(ref($xmlref->{SellerSearchDetails}) eq "ARRAY") {
+            # Is it an array of items?
+        push @{$self->{xmlref}->{SellerSearchDetails}},
+             @{$xmlref->{SellerSearchDetails}};
+        $nof_items_added = scalar @{$xmlref->{SellerSearchDetails}};
+    } else {
+            # It is a single item
+        push @{$self->{xmlref}->{SellerSearchDetails}},
+             $xmlref->{SellerSearchDetails};
+        $nof_items_added = 1;
+    }
+
+    #DEBUG("xmlref_add (after):", Data::Dumper::Dumper($self));
+    return $nof_items_added;
+} 
+
+1;

Added: packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/Similar.pm
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/Similar.pm	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/Similar.pm	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,28 @@
+######################################################################
+package Net::Amazon::Response::Similar;
+######################################################################
+use warnings;
+use strict;
+use base qw(Net::Amazon::Response);
+
+use Net::Amazon::Property;
+
+##################################################
+sub new {
+##################################################
+    my($class, %options) = @_;
+
+    my $self = $class->SUPER::new(%options);
+
+    bless $self, $class;   # reconsecrate
+}
+
+##################################################
+sub as_string {
+##################################################
+    my($self) = @_;
+
+    return $self->SUPER::list_as_string($self->properties);
+}
+
+1;

Added: packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/TextStream.pm
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/TextStream.pm	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/TextStream.pm	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,28 @@
+######################################################################
+package Net::Amazon::Response::TextStream;
+######################################################################
+use warnings;
+use strict;
+use base qw(Net::Amazon::Response);
+
+use Net::Amazon::Property;
+
+##################################################
+sub new {
+##################################################
+    my($class, %options) = @_;
+
+    my $self = $class->SUPER::new(%options);
+
+    bless $self, $class;   # reconsecrate
+}
+
+##################################################
+sub as_string {
+##################################################
+    my($self) = @_;
+
+    return $self->SUPER::list_as_string($self->properties);
+}
+
+1;

Added: packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/UPC.pm
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/UPC.pm	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/UPC.pm	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,40 @@
+######################################################################
+package Net::Amazon::Response::UPC;
+######################################################################
+use warnings;
+use strict;
+use base qw(Net::Amazon::Response);
+
+use Net::Amazon::Property;
+
+##################################################
+sub new {
+##################################################
+    my($class, %options) = @_;
+
+    my $self = $class->SUPER::new(%options);
+
+    bless $self, $class;   # reconsecrate
+}
+
+##################################################
+sub as_string {
+##################################################
+    my($self) = @_;
+
+    my($property) = $self->properties;
+    return $property->as_string();
+}
+
+##################################################
+sub properties {
+##################################################
+    my($self) = @_;
+
+    my $property = Net::Amazon::Property::factory(
+        xmlref => $self->{xmlref}->{Details}->[0]);
+
+    return ($property);
+}
+
+1;

Added: packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/Wishlist.pm
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/Wishlist.pm	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response/Wishlist.pm	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,29 @@
+######################################################################
+package Net::Amazon::Response::Wishlist;
+######################################################################
+use warnings;
+use strict;
+use base qw(Net::Amazon::Response);
+
+use Net::Amazon::Property;
+use Data::Dumper;
+
+##################################################
+sub new {
+##################################################
+    my($class, %options) = @_;
+
+    my $self = $class->SUPER::new(%options);
+
+    bless $self, $class;   # reconsecrate
+}
+
+##################################################
+sub as_string {
+##################################################
+    my($self) = @_;
+
+    return $self->SUPER::list_as_string($self->properties);
+}
+
+1;

Added: packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response.pm
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response.pm	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Response.pm	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,214 @@
+######################################################################
+package Net::Amazon::Response;
+######################################################################
+use warnings;
+use strict;
+
+use base qw(Net::Amazon);
+
+use Text::Wrap qw($columns wrap);
+use XML::Simple;
+
+our @FORCE_ARRAY_FIELDS = ();
+
+__PACKAGE__->make_accessor($_) for qw(
+  status messages items xmlref total_results);
+
+##################################################
+sub new {
+##################################################
+    my($class, %options) = @_;
+
+    my $self = {
+        status        => "",
+        messages      => [],
+        items         => [],
+        xmlref        => {},
+        total_results => undef,
+    };
+
+    bless $self, $class;
+}
+
+sub message {
+  my($self) = @_;
+
+  return join(";",@{$self->{messages}});
+}
+
+###########################################
+sub is_success {
+###########################################
+    my($self) = @_;
+
+    return $self->{status} ? 1 : "";
+}
+
+###########################################
+sub is_error {
+###########################################
+    my($self) = @_;
+
+    return !$self->is_success();
+}
+
+###########################################
+sub push_item {
+###########################################
+    my($self, $item) = @_;
+
+    push @{$self->{items}}, $item;
+}
+
+###########################################
+sub as_string {
+###########################################
+    my($self) = @_;
+
+    return Data::Dumper::Dumper($self);
+}
+
+###########################################
+sub list_as_string {
+###########################################
+    my($self, @properties) = @_;
+
+    my $full = "";
+
+        # Column with
+    $columns   = 60;
+    my $bullet = 1;
+
+    foreach my $property (@properties) {
+        $full .= "\n" if $full;
+        my $bullet_string = sprintf("[%d]%s", 
+                                    $bullet, (" " x (3-length($bullet))));
+        $full .= wrap("", "     ", $bullet_string . $property->as_string());
+        $bullet++;
+    }
+
+    return $full;
+}
+
+##################################################
+sub properties {
+##################################################
+    my($self) = @_;
+
+    my @properties = ();
+
+    if($self->is_success && ref($self->{xmlref}->{Details}) eq 'ARRAY') {
+        foreach my $xmlref (@{$self->{xmlref}->{Details}}) {
+            my $property = Net::Amazon::Property::factory(xmlref => $xmlref);
+            push @properties, $property;
+        }
+    }
+
+    if(wantarray) {
+        return (@properties);
+    }
+
+    if(@properties) {
+            # Scalar context and we've got results. Return the first one.
+        return $properties[0];
+    }
+
+        # Scalar context and we don't have anything.
+    return undef;
+}
+
+##################################################
+sub xml_parse {
+##################################################
+    my($self, $xml) = @_;
+
+    my $xs = XML::Simple->new();
+    return $xs->XMLin($xml, ForceArray => [ @FORCE_ARRAY_FIELDS ]);
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Net::Amazon::Response - Baseclass for responses from Amazon's web service
+
+=head1 SYNOPSIS
+
+    $resp = $ua->request($request);
+
+    if($resp->is_success()) { 
+        print $resp->as_string();
+    }
+
+    if($resp->is_error()) {
+        print $resp->message();
+    }
+ 
+    if($resp->is_success()) { 
+        for my $property ($resp->properties) {
+            print $property->as_string(), "\n";
+        }
+    }
+
+=head1 DESCRIPTION
+
+C<Net::Amazon::Response> is the baseclass for responses coming back 
+from the useragent's C<request> method. Responses are typically
+not of type C<Net::Amazon::Response> but one of its subclasses
+C<Net::Amazon::Response::*>. However, for basic error handling and
+dumping content, C<Net::Amazon::Response>'s methods are typically used,
+because we typically don't know what type of object we're 
+actually dealing with.
+
+=head2 METHODS
+
+=over 4
+
+=item is_success()
+
+Returns true if the request was successful. This doesn't mean any objects
+have been found, it just indicates a successful roundtrip.
+
+=item is_error()
+
+Returns true if an error occurred. Use C<message()> to determine what 
+kind of error.
+
+=item properties()
+
+Returns the list of C<Net::Amazon::Property> objects which were found
+by the query.
+
+=item as_string()
+
+Dumps the content of the response.
+
+=item message()
+
+Returns the error message as a string in case an error occurred. In case
+several errors occurred, they're stringed together. Look up C<messages()>
+if you need them separated.
+
+=item messages()
+
+Returns all error messages for a response as a reference to an array
+of string messages.
+
+=back
+
+=head1 SEE ALSO
+
+=head1 AUTHOR
+
+Mike Schilli, E<lt>m at perlmeister.comE<gt>
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright 2003 by Mike Schilli E<lt>m at perlmeister.comE<gt>
+
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself. 
+
+=cut

Added: packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Result/Seller/Listing.pm
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Result/Seller/Listing.pm	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Result/Seller/Listing.pm	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,146 @@
+######################################################################
+package Net::Amazon::Result::Seller::Listing;
+######################################################################
+use warnings;
+use strict;
+use base qw(Net::Amazon);
+
+use Data::Dumper;
+use Log::Log4perl qw(:easy);
+
+our @DEFAULT_ATTRIBUTES = qw(
+  ExchangeStartDate ExchangeConditionType
+  ExchangeAsin ExchangeSellerId ExchangeEndDate ExchangePrice
+  ExchangeSellerRating ExchangeStatus ExchangeId ExchangeTitle
+  ExchangeQuantityAllocated ExchangeQuantity ExchangeSellerCountry
+  ExchangeSellerState ExchangeSellerNickname ExchangeFeaturedCategory
+  ExchangeAvailability ExchangeOfferingType ListingId ExchangeCondition
+  ExchangeDescription
+);
+
+__PACKAGE__->make_accessor($_) for @DEFAULT_ATTRIBUTES;
+
+##################################################
+sub new {
+##################################################
+    my($class, %options) = @_;
+
+    if(!$options{xmlref}) {
+        die "Mandatory param xmlref missing";
+    }
+
+    my $self = { 
+        %options, 
+               };
+
+    bless $self, $class;
+
+    DEBUG "Calling Listing with xmlref=", Dumper($options{xmlref});
+
+        # Set default attributes
+    for my $attr (@DEFAULT_ATTRIBUTES) {
+        $self->$attr($options{xmlref}->{$attr});
+    }
+
+    return $self;
+}
+
+##################################################
+sub as_string {
+##################################################
+    my($self) = @_;
+
+    my $result = 
+                 $self->ExchangeTitle() .
+                 " (" .
+                 $self->ExchangeAsin() . 
+                 "): " .
+                 $self->ExchangePrice() .
+                 "";
+
+    return $result;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Net::Amazon::Result::Seller::Listing - Class for a single Listing of a Seller
+
+=head1 SYNOPSIS
+
+  for($seller_search_resp->result()->seller()->listings()) {
+      print $_->as_string(), "\n";
+  }
+
+=head1 DESCRIPTION
+
+C<Net::Amazon::Result::Seller::Listing> is a container for a single listing
+owned by a third-party seller, who is represented by a
+C<Net::Amazon::Result::Seller> object.
+
+An object of this class is also returned by an C<Exchange> request, using
+C<Net::Amazon::Response::Exchange>'s C<result> method.
+
+=head2 METHODS
+
+=over 4
+
+=item ExchangeStartDate()
+
+=item ExchangeConditionType()
+
+=item ExchangeAsin()
+
+=item ExchangeSellerId()
+
+=item ExchangeEndDate()
+
+=item ExchangePrice()
+
+=item ExchangeSellerRating()
+
+=item ExchangeStatus()
+
+=item ExchangeId()
+
+=item ExchangeTitle()
+
+=item ExchangeQuantityAllocated()
+
+=item ExchangeQuantity()
+
+=item ExchangeSellerCountry()
+
+=item ExchangeSellerState()
+
+=item ExchangeSellerNickname()
+
+=item ExchangeFeaturedCategory()
+
+=item ExchangeAvailability()
+
+=item ExchangeOfferingType()
+
+=item ListingId()
+
+=item ExchangeCondition()
+
+=back
+
+=head1 SEE ALSO
+
+=head1 AUTHOR
+
+Mike Schilli, E<lt>m at perlmeister.comE<gt>
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright 2004 by Mike Schilli E<lt>m at perlmeister.comE<gt>
+
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself. 
+
+=cut

Added: packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Result/Seller.pm
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Result/Seller.pm	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon/Result/Seller.pm	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,130 @@
+######################################################################
+package Net::Amazon::Result::Seller;
+######################################################################
+use warnings;
+use strict;
+use base qw(Net::Amazon);
+
+use Data::Dumper;
+use Log::Log4perl qw(:easy);
+use Net::Amazon::Result::Seller::Listing;
+
+our @DEFAULT_ATTRIBUTES = qw(StoreName SellerNickname 
+                             NumberOfOpenListings StoreId);
+__PACKAGE__->make_accessor($_) for @DEFAULT_ATTRIBUTES;
+__PACKAGE__->make_array_accessor($_) for qw(listings);
+
+##################################################
+sub new {
+##################################################
+    my($class, %options) = @_;
+
+    if(!$options{xmlref}) {
+        die "Mandatory param xmlref missing";
+    }
+
+    my @listings = ();
+
+    my $self = { 
+        %options, 
+               };
+
+    bless $self, $class;
+
+        # Set default attributes
+    for my $attr (@DEFAULT_ATTRIBUTES) {
+        DEBUG "Setting attribute $attr to $options{xmlref}->{$attr}";
+        $self->$attr($options{xmlref}->{$attr});
+    }
+
+    for my $listing (@{$options{xmlref}->{ListingProductInfo}->{ListingProductDetails}}) {
+        push @listings, 
+             Net::Amazon::Result::Seller::Listing->new(
+                 xmlref => $listing);
+    }
+
+    $self->listings(\@listings);
+
+    return $self;
+}
+
+##################################################
+sub as_string {
+##################################################
+    my($self) = @_;
+
+    my $result = $self->StoreName() . 
+                 " (" .
+                 $self->SellerNickname() .
+                 "): " .
+                 $self->NumberOfOpenListings() .
+                 "";
+
+    return $result;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Net::Amazon::Result::Seller - Class for Seller info
+
+=head1 SYNOPSIS
+
+  use Net::Amazon;
+
+  # ...
+
+  if($resp->is_success()) {
+      print $resp->result()->as_string();
+  }
+
+=head1 DESCRIPTION
+
+C<Net::Amazon::Result::Seller> is a container for results on a seller 
+search. It contains data on one particular seller (the one turned up by
+the previous search) and the listings this seller is currently running.
+
+=head2 METHODS
+
+=over 4
+
+=item StoreName()
+
+Name of the seller's store.
+
+=item SellerNickname()
+
+Seller's nickname.
+
+=item StoreId()
+
+ID of seller's store.
+
+=item NumberOfOpenListings()
+
+Number of listings the seller has currently open.
+
+=item listings()
+
+Returns an array of C<Net::Amazon::Result::Seller::Listing> objects.
+See the documentation of this class for details.
+
+=back
+
+=head1 SEE ALSO
+
+=head1 AUTHOR
+
+Mike Schilli, E<lt>m at perlmeister.comE<gt>
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright 2004 by Mike Schilli E<lt>m at perlmeister.comE<gt>
+
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself. 
+
+=cut

Added: packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon.pm
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon.pm	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/lib/Net/Amazon.pm	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,1255 @@
+#####################################################################
+package Net::Amazon;
+######################################################################
+# Mike Schilli <m at perlmeister.com>, 2003
+######################################################################
+
+use 5.006;
+use strict;
+use warnings;
+
+our $VERSION          = '0.34';
+our @CANNED_RESPONSES = ();
+
+use LWP::UserAgent;
+use HTTP::Request::Common;
+use XML::Simple;
+use Data::Dumper;
+use URI;
+use Log::Log4perl qw(:easy get_logger);
+use Time::HiRes qw(usleep gettimeofday tv_interval);
+
+# Each key represents a search() type, and each value indicates which
+# Net::Amazon::Request:: class to use to handle it.
+use constant SEARCH_TYPE_CLASS_MAP => {
+    artist       => 'Artist',
+    asin         => 'ASIN',
+    blended      => 'Blended',
+    browsenode   => 'BrowseNode',
+    exchange     => 'Exchange',
+    keyword      => 'Keyword',
+    manufacturer => 'Manufacturer',
+    power        => 'Power',
+    seller       => 'Seller',
+    similar      => 'Similar',
+    textstream   => 'TextStream',
+    upc          => 'UPC',
+    wishlist     => 'Wishlist',
+};
+
+
+##################################################
+sub new {
+##################################################
+    my($class, %options) = @_;
+
+    if(! exists $options{token}) {
+        die "Mandatory paramter 'token' not defined";
+    }
+
+    if(! exists $options{affiliate_id}) {
+        $options{affiliate_id} = "webservices-20";
+    }
+
+    my $self = {
+        strict         => 1,
+        response_dump  => 0,
+        rate_limit     => 1.0,  # 1 req/sec
+        max_pages      => 5,
+        ua             => LWP::UserAgent->new(),
+        %options,
+               };
+
+    help_xml_simple_choose_a_parser();
+
+    bless $self, $class;
+}
+
+##################################################
+sub search {
+##################################################
+    my($self, %params) = @_;
+
+    foreach my $key ( keys %params ) {
+        next unless ( my $class = SEARCH_TYPE_CLASS_MAP->{$key} );
+        
+        return $self->_make_request($class, \%params);
+    }
+
+    # FIX?
+    # This seems like it really should be a die() instead...this is
+    # indicative of a programming problem. Generally speaking, it's
+    # best to issue warnings from a module--you can't be sure that the
+    # client has a stderr to begin with, or that he wants errors
+    # spewed to it.
+    warn "No Net::Amazon::Request type could be determined";
+
+    return undef;
+}
+
+##################################################
+sub intl_url {
+##################################################
+    my($self, $url) = @_;
+
+    # Every time Amazon is adding a new country to the web service,
+    # they're rolling a dice on what the new URL is going to be.
+    # This method will try to keep up with their crazy mappings.
+
+    if(! exists $self->{locale}) {
+        return $url;
+    }
+
+    if ($self->{locale} eq "jp") {
+       $url =~ s/\.com/.co.jp/;
+       return $url;
+    }
+
+    if($self->{locale} eq "uk" or
+       $self->{locale} eq "de") {
+        $url =~ s/xml/xml-eu/;
+        return $url;
+    }
+        
+    return $url;
+}
+
+##################################################
+sub request {
+##################################################
+    my($self, $request) = @_;
+
+    my $AMZN_WISHLIST_BUG_ENCOUNTERED = 0;
+
+    my $resp_class = $request->response_class();
+
+    eval "require $resp_class;" or 
+        die "Cannot find '$resp_class'";
+
+    my $res  = $resp_class->new();
+
+    my $url  = URI->new($self->intl_url($request->amzn_xml_url()));
+    my $page = $request->{page};
+    my $ref;
+
+    {
+        my %params = $request->params();
+        $params{page}   = $page;
+        $params{locale} = $self->{locale} if exists $self->{locale};
+
+        $url->query_form(
+            'dev-t' => $self->{token},
+            't'     => $self->{affiliate_id},
+            map { $_, $params{$_} } sort keys %params,
+        );
+
+        my $urlstr = $url->as_string;
+        my $xml = fetch_url($self, $urlstr, $res);
+
+        if(!defined $xml) {
+            return $res;
+        }
+
+        DEBUG(sub { "Received [ " . $xml . "]" });
+
+            # Let the response class parse the XML
+        $ref = $res->xml_parse($xml);
+
+        # DEBUG(sub { Data::Dumper::Dumper($ref) });
+
+        if(! defined $ref) {
+            ERROR("Invalid XML");
+            $res->messages( [ "Invalid XML" ]);
+            $res->status("");
+            return $res;
+        }
+
+        if(exists $ref->{TotalPages}) {
+            INFO("Page $page/$ref->{TotalPages}");
+        }
+
+        if(exists $ref->{TotalResults}) {
+            $res->total_results( $ref->{TotalResults} );
+        }
+
+        if(exists $ref->{ErrorMsg}) {
+
+            if($AMZN_WISHLIST_BUG_ENCOUNTERED &&
+               $ref->{ErrorMsg} =~ /no exact matches/) {
+                DEBUG("End of buggy wishlist detected");
+                last;
+            }
+                
+            if (ref($ref->{ErrorMsg}) eq "ARRAY") {
+              # multiple errors, set arrary ref
+              $res->messages( $ref->{ErrorMsg} );
+            } else {
+              # single error, create array
+              $res->messages( [ $ref->{ErrorMsg} ] );
+            }
+
+            ERROR("Fetch Error: " . $res->message );
+            $res->status("");
+            return $res;
+        }
+
+        my $new_items = $res->xmlref_add($ref);
+        DEBUG("Received valid XML ($new_items items)");
+
+        # Stop if we've fetched max_pages already
+        if($self->{max_pages} <= $page) {
+            DEBUG("Fetched max_pages ($self->{max_pages}) -- stopping");
+            last;
+        }
+
+        # Work around the Amazon bug not setting TotalPages properly
+        # for wishlists
+        if(ref($res) =~ /Wishlist/ and
+           !exists $ref->{TotalPages}  and
+           $new_items == 10
+          ) {
+            $AMZN_WISHLIST_BUG_ENCOUNTERED = 1;
+            DEBUG("Trying to fetch additional wishlist page (AMZN bug)");
+            $page++;
+            redo;
+        }
+
+        if(exists $ref->{TotalPages} and
+           $ref->{TotalPages} > $page) {
+            DEBUG("Page $page of $ref->{TotalPages} fetched - continuing");
+            $page++;
+            redo;
+        }
+
+        # We're gonna fall out of this loop here.
+    }
+
+    $res->status(1);
+    # We have a valid response, so if TotalResults isn't set, 
+    # we most likely have a single response
+    $res->total_results(1) unless defined $res->total_results();
+    return $res;
+}
+
+##################################################
+sub fetch_url {
+##################################################
+    my($self, $url, $res) = @_;
+
+    my $max_retries = 2;
+
+    INFO("Fetching $url");
+
+    if(@CANNED_RESPONSES) {
+        INFO("Serving canned response (testing)");
+        return shift @CANNED_RESPONSES;
+    }
+
+    if(exists $self->{cache}) {
+        my $resp = $self->{cache}->get($url);
+        if(defined $resp) {
+            INFO("Serving from cache");
+            return $resp;
+        }
+
+        INFO("Cache miss");
+    }
+
+    my $ua = $self->{ua};
+    $ua->env_proxy();
+
+    my $resp;
+
+    {
+        # wait up to a second before the next request so
+        # as to not violate Amazon's 1 query per second
+        # rule (or the configured rate_limit).
+        $self->pause() if $self->{strict};
+
+        $resp = $ua->request(GET $url);
+
+        $self->reset_timer() if $self->{strict};
+
+        if($resp->is_error) {
+            # retry on 503 Service Unavailable errors
+            if ($resp->code == 503) {
+                if ($max_retries-- >= 0) {
+                    INFO("Temporary Amazon error 503, retrying");
+                    redo;
+                } else {
+                    INFO("Out of retries, giving up");
+                    $res->status("");
+                    $res->messages( [ "Too many temporary Amazon errors" ] );
+                    return undef;
+                }
+            } else {
+                $res->status("");
+                $res->messages( [ $resp->message ] );
+                return undef;
+            }
+        }
+
+        if($self->{response_dump}) {
+            my $dumpfile = "response-$self->{response_dump}.txt";
+            open FILE, ">$dumpfile" or die "Cannot open $dumpfile";
+            print FILE $resp->content();
+            close FILE;
+            $self->{response_dump}++;
+        }
+
+        if($resp->content =~ /<ErrorMsg>/ &&
+           $resp->content =~ /Please retry/i) {
+            if($max_retries-- >= 0) {
+                INFO("Temporary Amazon error, retrying");
+                redo;
+            } else {
+                INFO("Out of retries, giving up");
+                $res->status("");
+                $res->messages( [ "Too many temporary Amazon errors" ] );
+                return undef;
+            }
+        }
+    }
+
+    if(exists $self->{cache}) {
+        $self->{cache}->set($url, $resp->content());
+    }
+
+    return $resp->content();
+}
+
+##################################################
+# Poor man's Class::Struct
+##################################################
+sub make_accessor {
+##################################################
+    my($package, $name) = @_;
+
+    no strict qw(refs);
+
+    my $code = <<EOT;
+        *{"$package\\::$name"} = sub {
+            my(\$self, \$value) = \@_;
+
+            if(defined \$value) {
+                \$self->{$name} = \$value;
+            }
+            if(exists \$self->{$name}) {
+                return (\$self->{$name});
+            } else {
+                return "";
+            }
+        }
+EOT
+    if(! defined *{"$package\::$name"}) {
+        eval $code or die "$@";
+    }
+}
+
+##################################################
+# Make accessors for arrays
+##################################################
+sub make_array_accessor {
+##################################################
+    my($package, $name) = @_;
+
+    no strict qw(refs);
+
+    my $code = <<EOT;
+        *{"$package\\::$name"} = sub {
+            my(\$self, \$nameref) = \@_;
+            if(defined \$nameref) {
+                if(ref \$nameref eq "ARRAY") {
+                    \$self->{$name} = \$nameref;
+                } else {
+                    \$self->{$name} = [\$nameref];
+                }
+            }
+               # Return a list
+            if(exists \$self->{$name} and
+               ref \$self->{$name} eq "ARRAY") {
+                return \@{\$self->{$name}};
+            }
+
+            return undef;
+        }
+EOT
+
+    if(! defined *{"$package\::$name"}) {
+        eval $code or die "$@";
+    }
+}
+
+##################################################
+sub artist {
+##################################################
+    my($self, $nameref) = @_;
+
+    # Only return the first artist
+    return ($self->artists($nameref))[0];
+}
+
+
+##################################################
+sub xmlref_add {
+##################################################
+    my($self, $xmlref) = @_;
+
+    my $nof_items_added = 0;
+
+    # Push a nested hash structure, retrieved via XMLSimple, onto the
+    # object's internal 'xmlref' entry, which holds a ref to an array, 
+    # whichs elements are refs to hashes holding an item's attributes
+    # (like OurPrice etc.)
+
+    #DEBUG("xmlref_add ", Data::Dumper::Dumper($xmlref));
+
+    unless(ref($self->{xmlref}) eq "HASH" &&
+           ref($self->{xmlref}->{Details}) eq "ARRAY") {
+        $self->{xmlref}->{Details} = [];
+    }
+
+    if(ref($xmlref->{Details}) eq "ARRAY") {
+        # Is it an array of items?
+        push @{$self->{xmlref}->{Details}}, @{$xmlref->{Details}};
+        $nof_items_added = scalar @{$xmlref->{Details}};
+    } else {
+        # It is a single item
+        push @{$self->{xmlref}->{Details}}, $xmlref->{Details};
+        $nof_items_added = 1;
+    }
+
+    #DEBUG("xmlref_add (after):", Data::Dumper::Dumper($self));
+    return $nof_items_added;
+}
+
+##################################################
+sub help_xml_simple_choose_a_parser {
+##################################################
+    
+    eval "require XML::Parser";
+    unless($@) {
+        $XML::Simple::PREFERRED_PARSER = "XML::Parser";
+        return;
+    }
+
+    eval "require XML::SAX::PurePerl";
+    unless($@) {
+        $XML::Simple::PREFERRED_PARSER = "XML::SAX::PurePerl";
+        return;
+    }
+}
+
+##################################################
+# This timer makes sure we don't query Amazon more
+# than once a second.
+##################################################
+sub reset_timer {
+##################################################
+
+    my $self = shift;
+    $self->{t0} = [gettimeofday];
+}
+
+##################################################
+# Pause for up to a second if necessary.
+##################################################
+sub pause {
+##################################################
+
+    my $self = shift;
+    return unless ($self->{t0});
+
+    my $t1 = [gettimeofday];
+    my $dur = (1.0/$self->{rate_limit} - 
+               tv_interval($self->{t0}, $t1)) * 1000000;
+    if($dur > 0) {
+            # Use a pseudo subclass for the logger, since the app
+            # might not want to log that as 'ERROR'. Log4perl's
+            # inheritance mechanism makes sure it does the right
+            # thing for the current class.
+        my $logger = get_logger(__PACKAGE__ . "::RateLimit");
+        $logger->error("Ratelimiting: Sleeping $dur microseconds"); 
+        usleep($dur);
+    }
+}
+
+##
+## 'PRIVATE' METHODS
+##
+
+# $self->_make_request( TYPE, PARAMS )
+#
+# Takes a TYPE that corresponds to a Net::Amazon::Request
+# class, require()s that class, instantiates it, and returns
+# the result of that instance's request() method.
+#
+sub _make_request {
+    my ($self, $type, $params) = @_;
+
+    my $class = "Net::Amazon::Request::$type";
+
+    eval "require $class";
+
+    my $req = $class->new(%{$params});
+    
+    return $self->request($req);
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Net::Amazon - Framework for accessing amazon.com via SOAP and XML/HTTP
+
+=head1 SYNOPSIS
+
+  use Net::Amazon;
+
+  my $ua = Net::Amazon->new(token => 'YOUR_AMZN_TOKEN');
+
+    # Get a request object
+  my $response = $ua->search(asin => '0201360683');
+
+  if($response->is_success()) {
+      print $response->as_string(), "\n";
+  } else {
+      print "Error: ", $response->message(), "\n";
+  }
+
+=head1 ABSTRACT
+
+  Net::Amazon provides an object-oriented interface to amazon.com's
+  SOAP and XML/HTTP interfaces. This way it's possible to create applications
+  using Amazon's vast amount of data via a functional interface, without
+  having to worry about the underlying communication mechanism.
+
+=head1 DESCRIPTION
+
+C<Net::Amazon> works very much like C<LWP>: First you define a useragent
+like
+
+  my $ua = Net::Amazon->new(
+      token     => 'YOUR_AMZN_TOKEN',
+      max_pages => 3,
+  );
+
+which you pass your personal amazon developer's token (can be obtained
+from L<http://amazon.com/soap>) and (optionally) the maximum number of 
+result pages the agent is going to request from Amazon in case all
+results don't fit on a single page (typically holding 20 items).  Note that
+each new page requires a minimum delay of 1 second to comply with Amazon's
+one-query-per-second policy.
+
+According to the different search methods on Amazon, there's a bunch
+of different request types in C<Net::Amazon>. The user agent's 
+convenience method C<search()> triggers different request objects, 
+depending on which parameters you pass to it:
+
+=over 4
+
+=item C<< $ua->search(asin => "0201360683") >>
+
+The C<asin> parameter has Net::Amazon search for an item with the 
+specified ASIN. If the specified value is an arrayref instead of a single
+scalar, like in
+
+    $ua->search(asin => ["0201360683", "0596005083"]) 
+
+then a search for multiple ASINs is performed, returning a list of 
+results.
+
+=item C<< $ua->search(artist => "Rolling Stones") >>
+
+The C<artist> parameter has the user agent search for items created by
+the specified artist. Can return many results.
+
+=item C<< $ua->search(browsenode=>"4025", mode=>"books" [, keywords=>"perl"]) >>
+
+Returns a list of items by category ID (node). For example node "4025"
+is the CGI books category.  You can add a keywords parameter to filter 
+the results by that keyword.
+
+=item C<< $ua->search(exchange => 'Y04Y3424291Y2398445') >>
+
+Returns an item offered by a third-party seller. The item is referenced
+by the so-called I<exchange ID>.
+
+=item C<< $ua->search(keyword => "perl xml", mode => "books") >>
+
+Search by keyword, mandatory parameters C<keyword> and C<mode>.
+Can return many results.
+
+=item C<< $ua->search(wishlist => "1XL5DWOUFMFVJ") >>
+
+Search for all items in a specified wishlist.
+Can return many results.
+
+=item C<< $ua->search(upc => "075596278324", mode => "music") >>
+
+Music search by UPC (product barcode), mandatory parameter C<upc>.
+C<mode> has to be set to C<music>. Returns at most one result.
+
+=item C<< $ua->search(similar => "0201360683") >>
+
+Search for all items similar to the one represented by the ASIN provided.
+Can return many results.
+
+=item C<< $ua->search(power => "subject: perl and author: schwartz", mode => "books") >>
+
+Initiate a power search for all books matching the power query.
+Can return many results. See L<Net::Amazon::Request::Power> for details.
+
+=item C<< $ua->search(manufacturer => "o'reilly", mode => "books") >>
+
+Initiate a search for all items made by a given manufacturrer.
+Can return many results. See L<Net::Amazon::Request::Manufacturer> 
+for details.
+
+=item C<< $ua->search(blended => "Perl") >>
+
+Initiate a search for items in all categories.
+
+=item C<< $ua->search(seller => "A2GXAGU54VOP7") >>
+
+Start a search on items sold by a specific third-party seller, referenced
+by its ID (not seller name).
+
+=item C<< $ua->search(textstream => "Blah blah Rolling Stones blah blah") >>
+
+Find items related to keywords within a text stream.
+
+=back
+
+The user agent's C<search> method returns a response object, which can be 
+checked for success or failure:
+
+  if($resp->is_success()) {
+      print $resp->as_string();
+  } else {
+      print "Error: ", $resp->message(), "\n";
+  }
+
+In case the request for an item search 
+succeeds, the response contains one or more
+Amazon 'properties', as it calls the products found.
+All matches can be retrieved from the Response 
+object using it's C<properties()> method.
+
+In case the request fails, the response contains one or more
+error messages. The response object's C<message()> method will
+return it (or them) as a single string, while C<messages()> (notice
+the plural) will
+return a reference to an array of message strings.
+
+Response objects always have the methods 
+C<is_success()>,
+C<is_error()>,
+C<message()>,
+C<total_results()>,
+C<as_string()> and
+C<properties()> available.
+
+C<total_results()> returns the total number of results the search
+yielded.
+C<properties()> returns one or more C<Net::Amazon::Property> objects of type
+C<Net::Amazon::Property> (or one of its subclasses like
+C<Net::Amazon::Property::Book>, C<Net::Amazon::Property::Music>
+or Net::Amazon::Property::DVD), each
+of which features accessors named after the attributes of the product found
+in Amazon's database:
+
+    for ($resp->properties) {
+       print $_->Asin(), " ",
+             $_->OurPrice(), "\n";
+    }
+
+In scalar context, C<properties()> just returns the I<first> 
+C<Net::Amazon::Property> object found.
+Commonly available accessors to C<Net::Amazon::Property> objects are
+C<OurPrice()>,
+C<ImageUrlLarge()>,
+C<ImageUrlMedium()>,
+C<ImageUrlSmall()>,
+C<ReleaseDate()>,
+C<Catalog()>,
+C<Asin()>,
+C<url()>,
+C<Manufacturer()>,
+C<UsedPrice()>,
+C<ListPrice()>,
+C<ProductName()>,
+C<Availability()>,
+C<SalesRank()>,
+C<CollectiblePrice()>,
+C<CollectibleCount()>,
+C<NumberOfOfferings()>,
+C<UsedCount()>,
+C<ThirdPartyNewPrice()>,
+C<ThirdPartyNewCount()>,
+C<similar_asins()>.
+For details, check L<Net::Amazon::Property>.
+
+Also, the specialized classes C<Net::Amazon::Property::Book> and
+C<Net::Amazon::Property::Music> feature convenience methods like
+C<authors()> (returning the list of authors of a book) or 
+C<album()> for CDs, returning the album title.
+
+Customer reviews:
+Every property features a C<review_set()> method which returns a
+C<Net::Amazon::Attribute::ReviewSet> object, which in turn offers
+a list of C<Net::Amazon::Attribute::Review> objects. Check the respective
+man pages for details on what's available.
+
+=head2 Requests behind the scenes
+
+C<Net::Amazon>'s C<search()> method is just a convenient way to 
+create different kinds of request objects behind the scenes and
+trigger them to send requests to Amazon.
+
+Depending on the parameters fed to the C<search> method, C<Net::Amazon> will
+determine the kind of search requested and create one of the following
+request objects:
+
+=over 4
+
+=item Net::Amazon::Request::ASIN
+
+Search by ASIN, mandatory parameter C<asin>. 
+Returns at most one result.
+
+=item Net::Amazon::Request::Artist
+
+Music search by Artist, mandatory parameter C<artist>.
+Can return many results.
+
+=item Net::Amazon::Request::BrowseNode
+
+Returns category (node) listing. Mandatory parameters C<browsenode>
+(must be numeric) and C<mode>. Can return many results.
+
+=item Net::Amazon::Request::Keyword
+
+Keyword search, mandatory parameters C<keyword> and C<mode>.
+Can return many results.
+
+=item Net::Amazon::Request::UPC
+
+Music search by UPC (product barcode), mandatory parameter C<upc>.
+C<mode> has to be set to C<music>. Returns at most one result.
+
+=item Net::Amazon::Request::Blended
+
+'Blended' search on a keyword, resulting in matches across the board.
+No 'mode' parameter is allowed. According to Amazon's developer's kit, 
+this will result in up to three matches per category and can yield
+a total of 45 matches.
+
+=item Net::Amazon::Request::Power
+
+Understands power search strings. See L<Net::Amazon::Request::Power>
+for details. Mandatory parameter C<power>.
+
+=item Net::Amazon::Request::Manufacturer
+
+Searches for all items made by a given manufacturer. Mandatory parameter
+C<manufacturer>.
+
+=item Net::Amazon::Request::Similar
+
+Finds items similar to a given one.
+
+=item Net::Amazon::Request::Wishlist
+
+Find item on someone's wish list.
+
+=item Net::Amazon::Request::Seller
+
+Searches for a third-party seller on Amazon by seller ID. This search
+is different than the previous ones, since it doesn't return Amazon
+items, but a single seller record. Don't use the C<properties()> method
+on the response, use C<result()> instead, which returns a 
+L<Net::Amazon::Result::Seller> object. Check the manpage for details.
+
+=item Net::Amazon::Request::Exchange
+
+Searches for items offered by third-party sellers. Items are referenced
+by their so-called I<Exchange ID>.
+Similar to L<Net::Amazon::Request::Seller>,
+this request doesn't return a list of Amazon properties, so please use
+C<result()> instead, which will return a I<single>
+L<Net::Amazon::Result::Seller::Listing> item.
+Check the manpage for details on what attributes are available there.
+
+=back
+
+Check the respective man pages for details on these request objects.
+Request objects are typically created like this (with a Keyword query
+as an example):
+
+    my $req = Net::Amazon::Request::Keyword->new(
+        keyword   => 'perl',
+	mode      => 'books',
+    );
+
+and are handed over to the user agent like that:
+
+    # Response is of type Net::Amazon::Response::ASIN
+  my $resp = $ua->request($req);
+
+The convenient C<search()> method just does these two steps in one.
+
+=head2 METHODS
+
+=over 4
+
+=item $ua = Net::Amazon->new(token => $token, ...)
+
+Create a new Net::Amazon useragent. C<$token> is the value of 
+the mandatory Amazon developer's token, which can be obtained from
+L<http://amazon.com/soap>. 
+
+Additional optional parameters:
+
+=over 4
+
+=item C<< max_pages => $max_pages >>
+
+Sets how many 
+result pages the module is supposed to fetch back from Amazon, which
+only sends back 10 results per page.  
+Since each page requires a new query to Amazon, at most one query 
+per second will be made in C<strict> mode to comply with Amazon's terms 
+of service. This will impact performance if you perform a search 
+returning many pages of results.
+
+=item C<< affiliate_id => $affiliate_id >>
+
+your Amazon affiliate ID, if you have one. It defaults to 
+C<webservices-20> which is currently (as of 06/2003) 
+required by Amazon.
+
+=item C<< strict => 1 >>
+
+Makes sure that C<Net::Amazon> complies with Amazon's terms of service
+by limiting the number of outgoing requests to 1 per second. Defaults
+to C<1>, enabling rate limiting as defined via C<rate_limit>.
+
+=item C<< rate_limit => $reqs_per_sec >>
+
+Sets the rate limit to C<$reqs_per_sec> requests per second if 
+rate limiting has been enabled with C<strict> (see above).
+Defaults to C<1>, limiting the number of outgoing requests to 
+1 per second.
+
+=item C<< $resp = $ua->request($request) >>
+
+Sends a request to the Amazon web service. C<$request> is of a 
+C<Net::Amazon::Request::*> type and C<$response> will be of the 
+corresponding C<Net::Amazon::Response::*> type.
+
+=back
+
+=head2 Accessing foreign Amazon Catalogs
+
+As of this writing (07/2003), Amazon also offers its web service for
+the UK, Germany, and Japan. Just pass in
+
+    locale => 'uk'
+    locale => 'de'
+    locale => 'jp'
+
+respectively to C<Net::Amazon>'s constructor C<new()> and instead of returning
+results sent by the US mothership, it will query the particular country's
+catalog and show prices in (gack!) local currencies.
+
+=head2 EXAMPLE
+
+Here's a full-fledged example doing a artist search:
+
+    use Net::Amazon;
+    use Net::Amazon::Request::Artist;
+    use Data::Dumper;
+
+    die "usage: $0 artist\n(use Zwan as an example)\n"
+        unless defined $ARGV[0];
+
+    my $ua = Net::Amazon->new(
+        token       => 'YOUR_AMZN_TOKEN',
+    );
+
+    my $req = Net::Amazon::Request::Artist->new(
+        artist  => $ARGV[0],
+    );
+
+       # Response is of type Net::Amazon::Artist::Response
+    my $resp = $ua->request($req);
+
+    if($resp->is_success()) {
+        print $resp->as_string, "\n";
+    } else {
+        print $resp->message(), "\n";
+    }
+
+And here's one displaying someone's wishlist:
+
+    use Net::Amazon;
+    use Net::Amazon::Request::Wishlist;
+
+    die "usage: $0 wishlist_id\n" .
+        "(use 1XL5DWOUFMFVJ as an example)\n" unless $ARGV[0];
+
+    my $ua = Net::Amazon->new(
+        token       => 'YOUR_AMZN_TOKEN',
+    );
+
+    my $req = Net::Amazon::Request::Wishlist->new(
+        id  => $ARGV[0]
+    );
+
+       # Response is of type Net::Amazon::ASIN::Response
+    my $resp = $ua->request($req);
+
+    if($resp->is_success()) {
+        print $resp->as_string, "\n";
+    } else {
+        print $resp->message(), "\n";
+    }
+
+=head1 CACHING
+
+Responses returned by Amazon's web service can be cached locally.
+C<Net::Amazon>'s C<new> method accepts a reference to a C<Cache>
+object. C<Cache> (or one of its companions like C<Cache::Memory>,
+C<Cache::File>, etc.) can be downloaded from CPAN, please check their
+documentation for details. In fact, any other type of cache
+implementation will do as well, see the requirements below.
+
+Here's an example utilizing a file cache which causes C<Net::Amazon> to
+cache responses for 30 minutes:
+
+    use Cache::File;
+
+    my $cache = Cache::File->new( 
+        cache_root        => '/tmp/mycache',
+        default_expires   => '30 min',
+    );
+
+    my $ua = Net::Amazon->new(
+        token       => 'YOUR_AMZN_TOKEN',
+        cache       => $cache,
+    );
+
+C<Net::Amazon> uses I<positive> caching only, errors won't be cached. 
+Erroneous requests will be sent to Amazon every time. Positive cache 
+entries are keyed by the full URL used internally by requests submitted 
+to Amazon.
+
+Caching isn't limited to the C<Cache> class. Any cache object which
+adheres to the following interface can be used:
+
+        # Set a cache value
+    $cache->set($key, $value);
+
+        # Return a cached value, 'undef' if it doesn't exist
+    $cache->get($key);
+
+=head1 PROXY SETTINGS
+
+C<Net::Amazon> uses C<LWP::UserAgent> under the hood to send
+web requests to Amazon's web site. If you're in an environment where
+all Web traffic goes through a proxy, there's two ways to configure that.
+
+First, C<Net::Amazon> picks up proxy settings from environment variables:
+
+    export http_proxy=http://proxy.my.place:8080
+
+in the surrounding shell or setting
+
+    $ENV{http_proxy} = "http://proxy.my.place:8080";
+
+in your Perl script
+will route all requests through the specified proxy.
+
+Secondly, you can
+pass a user agent instance to Net::Amazon's constructor:
+
+    use Net::Amazon;
+    use LWP::UserAgent;
+
+    my $ua = LWP::UserAgent->new();
+    my $na = Net::Amazon->new(ua => $ua, token => 'YOUR_AMZN_TOKEN');
+    # ...
+
+This way, you can configure C<$ua> up front before Net::Amazon will use it.
+
+=head1 DEBUGGING
+
+If something's going wrong and you want more verbosity, just bump up
+C<Net::Amazon>'s logging level. C<Net::Amazon> comes with C<Log::Log4perl>
+statements embedded, which are disabled by default. However, if you initialize 
+C<Log::Log4perl>, e.g. like
+
+    use Net::Amazon;
+    use Log::Log4perl qw(:easy);
+
+    Log::Log4perl->easy_init($DEBUG);
+    my Net::Amazon->new();
+    # ...
+
+you'll see what's going on behind the scenes, what URLs the module 
+is requesting from Amazon and so forth. Log::Log4perl allows all kinds
+of fancy stuff, like writing to a file or enabling verbosity in certain
+parts only -- check http://log4perl.sourceforge.net for details.
+
+=head1 LIVE TESTING
+
+Results returned by Amazon can be incomplete or simply wrong at times,
+due to their "best effort" design of the service. This is why the test
+suite that comes with this module has been changed to perform its test
+cases against canned data. If you want to perform the tests against
+the live Amazon servers instead, just set the environment variable
+
+    NET_AMAZON_LIVE_TESTS=1
+
+=head1 WHY ISN'T THERE SUPPORT FOR METHOD XYZ?
+
+Because nobody wrote it yet. If Net::Amazon doesn't yet support a method
+advertised on Amazon's web service, you could help us out. Net::Amazon
+has been designed to be expanded over time, usually it only takes a couple
+of lines to support a new method, the rest is done via inheritance within
+Net::Amazon.
+
+Here's the basic plot:
+
+=over 4
+
+=item *
+
+Get Net::Amazon from CVS. Use
+
+        # (Just hit enter when prompted for a password)
+    cvs -d:pserver:anonymous at cvs.net-amazon.sourceforge.net:/cvsroot/net-amazon login
+    cvs -z3 -d:pserver:anonymous at cvs.net-amazon.sourceforge.net:/cvsroot/net-amazon co Net-Amazon
+
+If this doesn't work, just use the latest distribution from 
+net-amazon.sourceforge.net.
+
+=item *
+
+Write a new Net::Amazon::Request::XYZ package, start with this template
+
+    ######################################
+    package Net::Amazon::Request::XYZ;
+    ######################################
+    use base qw(Net::Amazon::Request);
+
+    ######################################
+    sub new {
+    ######################################
+        my($class, %options) = @_;
+
+        if(!exists $options{XYZ_option}) {
+            die "Mandatory parameter 'XYZ_option' not defined";
+        }
+    
+        my $self = $class->SUPER::new(%options);
+    
+        bless $self, $class;   # reconsecrate
+    }
+
+and add documentation. Then, create a new Net::Amazon::Response::XYZ module:
+
+    ##############################
+    package Net::Amazon::Response;
+    ##############################
+    use base qw(Net::Amazon::Response);
+
+    use Net::Amazon::Property;
+
+    ##############################
+    sub new {
+    ##############################
+        my($class, %options) = @_;
+    
+        my $self = $class->SUPER::new(%options);
+    
+        bless $self, $class;   # reconsecrate
+    }
+
+and also add documentation to it. Then, add the line
+
+    use Net::Amazon::Request::XYZ;
+
+to Net/Amazon.pm.
+
+=back
+
+And that's it! Again, don't forget the I<add documentation> part. Modules
+without documentation are of no use to anybody but yourself. 
+
+Check out the different Net::Amazon::Request::*
+and Net::Amazon::Response modules in the distribution if you need to adapt
+your new module to fulfil any special needs, like a different Amazon URL
+or a different way to handle the as_string() method. Also, post
+and problems you might encounter to the mailing list, we're gonna help you
+out.
+
+If possible, provide a test case for your extension. When finished, send 
+a patch to the mailing list at 
+
+   net-amazon-devel at lists.sourceforge.net
+
+and if it works, I'll accept it and will work it into the main distribution.
+Your name will show up in the contributor's list below (unless you tell
+me otherwise).
+
+=head2 SAMPLE SCRIPTS
+
+There's a number of useful scripts in the distribution's eg/ directory.
+Take C<power> for example, written by Martin Streicher 
+E<lt>martin.streicher at apress.comE<gt>: I lets you perform 
+a I<power search> using Amazon's query language. To search for all books 
+written by Randal Schwartz about Perl, call this from the command line:
+
+    power 'author: schwartz subject: perl'
+
+Note that you need to quote the query string to pass it as one argument
+to C<power>. If a power search returns more results than you want to
+process at a time, just limit the number of pages, telling C<power>
+which page to start at (C<-s>) and which one to finish with (C<-f>).
+Here's a search for all books on the subject C<computer>, limited
+to the first 10 pages:
+
+    power -s 1 -f 10 'subject: computer'
+
+Check out the script C<power> in eg/ for more options.
+
+=head2 HOW TO SEND ME PATCHES
+
+If you want me to include your modification or enhancement 
+in the distribution of Net::Amazon, please do the following:
+
+=over 4
+
+=item *
+
+Work off the latest CVS version. Here's the steps to get it:
+
+    CVSROOT=:pserver:anonymous at cvs.net-amazon.sourceforge.net:/cvsroot/net-amazon
+    export CVSROOT
+    cvs login (just hit Enter)
+    cvs co Net-Amazon
+
+This will create a new C<Net-Amazon> directory with the latest 
+development version of C<Net::Amazon> on your local machine.
+
+=item *
+
+Apply your changes to this development tree.
+
+=item *
+
+Run a diff between the tree and your changes it in this way:
+
+    cd Net-Amazon
+    cvs diff -Nau >patch_to_mike.txt
+
+=item *
+
+Email me C<patch_to_mike.txt>. If your patch works (and you've included
+test cases and documentation), I'll apply it on the spot.
+
+=back
+
+=head1 INSTALLATION
+
+C<Net::Amazon> depends on Log::Log4perl, which can be pulled from CPAN by
+simply saying
+
+    perl -MCPAN -eshell 'install Log::Log4perl'
+
+Also, it needs LWP::UserAgent and XML::Simple 2.x, which can be obtained 
+in a similar way.
+
+Once all dependencies have been resolved, C<Net::Amazon> installs with
+the typical sequence
+
+    perl Makefile.PL
+    make
+    make test
+    make install
+
+Make sure you're connected to the Internet while running C<make test>
+because it will actually contact amazon.com and run a couple of live tests.
+
+The module's distribution tarball and documentation are available at
+
+    http://perlmeister.com/devel/#amzn 
+
+and on CPAN.
+
+=head1 SEE ALSO
+
+The following modules play well within the C<Net::Amazon> framework:
+
+=over 4
+
+=item C<Net::Amazon::RemoteCart>
+
+by David Emery E<lt>dave at skiddlydee.comE<gt> provides a complete API for
+creating Amazon shopping carts on a local site, managing them and finally 
+submitting them to Amazon for checkout. It is available on CPAN.
+
+=back
+
+=head1 CONTACT
+
+The C<Net::Amazon> project's home page is hosted on 
+
+    http://net-amazon.sourceforge.net
+
+where you can find documentation, news and the latest development and
+stable releases for download. If you have questions about how to
+use C<Net::Amazon>, want to report a bug or just participate in its
+development, please send a message to the mailing 
+list net-amazon-devel at lists.sourceforge.net
+
+=head1 AUTHOR
+
+Mike Schilli, E<lt>na at perlmeister.comE<gt> (Please contact me via the mailing list: net-amazon-devel at lists.sourceforge.net )
+
+Contributors (thanks y'all!):
+
+    Andy Grundman <andy at hybridized.org>
+    Barnaby Claydon <bclaydon at perseus.com>
+    Batara Kesuma <bkesuma at gaijinweb.com>
+    Bill Fitzpatrick
+    Brian <brianbrian at gmail.com>
+    Brian Hirt <bhirt at mobygames.com>
+    Dan Kreft <dan at kreft.net>
+    Dan Sully <daniel at electricrain.com>
+    Jackie Hamilton <kira at cgi101.com>
+    Konstantin Gredeskoul <kig at get.topica.com>
+    Lance Cleveland <lancec at proactivewm.com>
+    Martha Greenberg <marthag at mit.edu>
+    Martin Streicher <martin.streicher at apress.com>
+    Mike Evron <evronm at dtcinc.net>
+    Padraic Renaghan <padraic at renaghan.com>
+    rayg <rayg at varchars.com>
+    Robert Graff <rgraff at workingdemo.com>
+    Robert Rothenberg <wlkngowl at i-2000.com>
+    Steve Rushe <steve at deeden.co.uk>
+    Tatsuhiko Miyagawa <miyagawa at livedoor.jp>
+    Tony Bowden <tony at kasei.com>
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright 2003, 2004 by Mike Schilli E<lt>na at perlmeister.comE<gt>
+
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself. 
+
+=cut

Added: packages/libnet-amazon-perl/branches/upstream/current/t/001ASIN.t
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/t/001ASIN.t	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/t/001ASIN.t	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,174 @@
+# Before `make install' is performed this script should be runnable with
+# `make test'. After `make install' it should work as `perl 1.t'
+
+#########################
+
+# change 'tests => 1' to 'tests => last_test_to_print';
+
+use warnings;
+use strict;
+
+use Test::More tests => 33;
+BEGIN { use_ok('Net::Amazon') };
+
+#use Log::Log4perl qw(:easy);
+#Log::Log4perl->easy_init($INFO);
+
+use Net::Amazon::Request::ASIN;
+use Net::Amazon::Response::ASIN;
+use File::Spec;
+
+my $CANNED = "canned";
+$CANNED = File::Spec->catfile("t", "canned") unless -d $CANNED;
+
+if(! exists $ENV{NET_AMAZON_LIVE_TESTS}) {
+    for(map { File::Spec->catfile($CANNED, $_) }
+        qw(asin_pp.xml asin_err.xml 
+           asin_mua.xml asin_cd.xml asin_cdm.xml dvd.xml)) {
+        open FILE, "<$_" or die "Cannot open $_";
+        my $data = join '', <FILE>;
+        close FILE;
+        push @Net::Amazon::CANNED_RESPONSES, $data;
+    }
+}
+
+######################################################################
+# Successful ASIN fetch
+######################################################################
+my $ua = Net::Amazon->new(
+    token       => 'YOUR_AMZN_TOKEN',
+);
+
+my $req = Net::Amazon::Request::ASIN->new(
+    asin  => '0201360683'
+);
+
+   # Response is of type Net::Amazon::ASIN::Response
+my $resp = $ua->request($req);
+
+ok($resp->is_success(), "Successful fetch");
+like($resp->as_string(), qr/Schilli/, "Found Perl Power");
+
+######################################################################
+# Error fetching ASIN
+######################################################################
+$req = Net::Amazon::Request::ASIN->new(
+    asin  => '123'
+);
+
+   # Response is of type Net::Amazon::ASIN::Response
+$resp = $ua->request($req);
+
+ok($resp->is_error(), "Error reported correctly");
+like($resp->message(), qr/Invalid/, "Invalid ASIN reported correctly");
+
+######################################################################
+# Multiple Authors
+######################################################################
+$req = Net::Amazon::Request::ASIN->new(
+    asin  => '0201633612'
+);
+
+   # Response is of type Net::Amazon::ASIN::Response
+$resp = $ua->request($req);
+
+ok($resp->is_success(), "Found Gamma");
+my($book) = $resp->properties();
+like(join('&', $book->authors()), 
+     qr#Erich Gamma&Richard Helm&Ralph Johnson&John Vlissides#,
+     "Found multiple authors");
+
+my @similar = $book->similar_asins();
+is(scalar @similar, 0, "No similar items on this item");
+
+######################################################################
+# properties() in scalar context
+######################################################################
+$book = $resp->properties();
+like(join('&', $book->authors()), 
+     qr#Erich Gamma&Richard Helm&Ralph Johnson&John Vlissides#,
+     "Found multiple authors");
+
+######################################################################
+# Net::Amazon::Property::Book accessors
+######################################################################
+is($book->title, "Design Patterns", "Title");
+is($book->year, "1995", "Year");
+like($book->OurPrice, qr/\$/, "Amazon Price");
+like($book->ListPrice, qr/\$/, "List Price");
+is($book->binding, "Hardcover", "Binding");
+
+######################################################################
+# Successful ASIN fetch of a music CD
+######################################################################
+$req = Net::Amazon::Request::ASIN->new(
+    asin  => 'B00007M84Q',
+    mode  => 'music',
+);
+
+   # Response is of type Net::Amazon::ASIN::Response
+$resp = $ua->request($req);
+
+ok($resp->is_success(), "Successful fetch");
+like($resp->as_string(), qr/Zwan/, "Found Zwan");
+
+######################################################################
+# Net::Amazon::Property::Music accessors
+######################################################################
+my($cd) = $resp->properties();
+is($cd->album, "Mary Star of the Sea", "Album");
+is($cd->artist, "Zwan", "Artist");
+is($cd->year, "2003", "Year");
+like($cd->OurPrice, qr/\$/, "Amazon Price");
+like($cd->ListPrice, qr/\$/, "List Price");
+
+######################################################################
+# Net::Amazon::Property::Music item with two artists
+######################################################################
+$req = Net::Amazon::Request::ASIN->new(
+    asin  => 'B00005A46I',
+    mode  => 'music',
+);
+
+   # Response is of type Net::Amazon::ASIN::Response
+$resp = $ua->request($req);
+
+ok($resp->is_success(), "Successful fetch");
+like($resp->as_string(), qr(Anne Sofie von Otter/Elvis Costello), 
+     "Found Otter/Costello");
+($cd) = $resp->properties();
+is($cd->artist(), "Anne Sofie von Otter", "artist() on mult artists");
+is(join('#', $cd->artists()), "Anne Sofie von Otter#Elvis Costello",
+    "artists() with mult artists");
+
+######################################################################
+# Net::Amazon::Property::DVD item with two artists
+######################################################################
+$req = Net::Amazon::Request::ASIN->new(
+    asin  => '6305181772',
+);
+
+   # Response is of type Net::Amazon::ASIN::Response
+$resp = $ua->request($req);
+
+ok($resp->is_success(), "Successful fetch");
+like($resp->as_string(), qr(Mission Impossible), 
+     "Found Mission Impossible");
+my ($dvd) = $resp->properties();
+
+is($dvd->director(), "Brian De Palma", "director() finds first director");
+like($dvd->SalesRank(), qr/^[\d,]+$/, "Checking SalesRank");
+is(join('#', $dvd->directors()), "Brian De Palma",
+    "directors() finds first director");
+
+like(join('#', $dvd->starring()), qr/Tom Cruise#Jon Voight#Emmanuelle B/, 
+     "starring() finds actors");
+
+is($resp->total_results, 1, "Total of 1");
+
+######################################################################
+# Illegal request type
+######################################################################
+eval {$req = Net::Amazon::Request::ASIN->new(asin  => "6305181772",
+                                             type  => "whackamole");};
+like($@, qr/Unknown type/, "Check illegal request type");

Added: packages/libnet-amazon-perl/branches/upstream/current/t/002Wishlist.t
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/t/002Wishlist.t	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/t/002Wishlist.t	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,102 @@
+# Before `make install' is performed this script should be runnable with
+# `make test'. After `make install' it should work as `perl 1.t'
+
+#########################
+
+# change 'tests => 1' to 'tests => last_test_to_print';
+
+use strict;
+use warnings;
+
+use Test::More tests => 5;
+BEGIN { use_ok('Net::Amazon') };
+
+use Net::Amazon::Request::Wishlist;
+use Net::Amazon::Response::Wishlist;
+use File::Spec;
+
+my $CANNED = "canned";
+$CANNED = File::Spec->catfile("t", "canned") unless -d $CANNED;
+
+#use Log::Log4perl qw(:easy);
+#Log::Log4perl->easy_init({level  => $DEBUG, file => "STDOUT",
+#                          layout => "%F{1}%L> %m%n" });
+
+######################################################################
+# Get a 1-item wishlist
+######################################################################
+canned("wishlist1.xml");
+
+my $ua = Net::Amazon->new(
+    token       => 'YOUR_AMZN_TOKEN',
+);
+
+my $req = Net::Amazon::Request::Wishlist->new(
+    id  => '1XL5DWOUFMFVJ'
+);
+
+   # Response is of type Net::Amazon::ASIN::Response
+my $resp = $ua->request($req);
+
+like($resp->as_string(), qr#Stallman#, "Found Stallman");
+
+######################################################################
+# Get a canned 10-item wishlist
+######################################################################
+canned("wishlist10_1.xml");
+canned("wishlist10_2.xml");
+
+$ua = Net::Amazon->new(
+    token       => 'YOUR_AMZN_TOKEN',
+);
+
+$req = Net::Amazon::Request::Wishlist->new(
+    id  => '1XL5DWOUFMFVJ'
+);
+
+   # Response is of type Net::Amazon::ASIN::Response
+$resp = $ua->request($req);
+
+like($resp->as_string(), qr#Samsung.*?Cornea#s, "Complete 10-item list");
+
+######################################################################
+# Get a canned 11-item wishlist
+######################################################################
+canned("wishlist10_1.xml");
+canned("wishlist1.xml");
+
+$ua = Net::Amazon->new(
+    token       => 'YOUR_AMZN_TOKEN',
+);
+
+$req = Net::Amazon::Request::Wishlist->new(
+    id  => '1XL5DWOUFMFVJ'
+);
+
+   # Response is of type Net::Amazon::ASIN::Response
+$resp = $ua->request($req);
+
+#print $resp->as_string;
+like($resp->as_string(), qr#Samsung.*?Stallman#s, "Complete 11-item list");
+
+$req = Net::Amazon::Request::Wishlist->new(
+    wishlist  => '1XL5DWOUFMFVJ'
+);
+
+ok($req, "Check 0.29 param bugfix");
+
+######################################################################
+# handle canned responses
+######################################################################
+sub canned {
+    my($file) = @_;
+
+    if(! exists $ENV{NET_AMAZON_LIVE_TESTS} ) {
+        $file = File::Spec->catfile($CANNED, $file);
+        open FILE, "<$file" or die "Cannot open $file";
+        my $data = join '', <FILE>;
+        close FILE;
+        push @Net::Amazon::CANNED_RESPONSES, $data;
+    }
+}
+

Added: packages/libnet-amazon-perl/branches/upstream/current/t/003UPC.t
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/t/003UPC.t	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/t/003UPC.t	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,69 @@
+# Before `make install' is performed this script should be runnable with
+# `make test'. After `make install' it should work as `perl 1.t'
+
+#########################
+
+# change 'tests => 1' to 'tests => last_test_to_print';
+
+use warnings;
+use strict;
+
+use Test::More tests => 8;
+BEGIN { use_ok('Net::Amazon') };
+
+use Net::Amazon::Request::UPC;
+use Net::Amazon::Response::UPC;
+use File::Spec;
+
+my $CANNED = "canned";
+$CANNED = File::Spec->catfile("t", "canned") unless -d $CANNED;
+
+#Only for debugging
+#use Log::Log4perl qw(:easy);
+#Log::Log4perl->easy_init($DEBUG);
+
+######################################################################
+# Successful UPC fetch
+######################################################################
+
+canned("upc_zwan.xml");
+
+my $ua = Net::Amazon->new(
+    token       => 'YOUR_AMZN_TOKEN',
+);
+
+my $req = Net::Amazon::Request::UPC->new(
+    upc  => '093624843627',
+    mode => 'music',
+);
+
+   # Response is of type Net::Amazon::UPC::Response
+my $resp = $ua->request($req);
+
+ok($resp->is_success(), "Successful fetch");
+like($resp->as_string(), qr#Mary Star of the Sea#, "Found Zwan");
+like($resp->as_string(), qr#Zwan#, "Found Zwan");
+
+######################################################################
+# Parameters
+######################################################################
+my $p = ($resp->properties)[0];
+is($p->artist(), "Zwan", "Artist is Zwan");
+is($p->album(), "Mary Star of the Sea", "Album is Mary Star of the Sea");
+is($p->year(), "2003", "Year is 2003");
+is($p->label(), "Warner Brothers", "Label is Warner Brothers");
+
+######################################################################
+# handle canned responses
+######################################################################
+sub canned {
+    my($file) = @_;
+
+    if(! exists $ENV{NET_AMAZON_LIVE_TESTS} ) {
+        $file = File::Spec->catfile($CANNED, $file);
+        open FILE, "<$file" or die "Cannot open $file";
+        my $data = join '', <FILE>;
+        close FILE;
+        push @Net::Amazon::CANNED_RESPONSES, $data;
+    }
+}

Added: packages/libnet-amazon-perl/branches/upstream/current/t/004Reviews.t
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/t/004Reviews.t	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/t/004Reviews.t	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,69 @@
+# Before `make install' is performed this script should be runnable with
+# `make test'. After `make install' it should work as `perl 1.t'
+
+#########################
+
+# change 'tests => 1' to 'tests => last_test_to_print';
+
+use warnings;
+use strict;
+
+use Test::More qw(no_plan);
+BEGIN { use_ok('Net::Amazon') };
+
+#use Log::Log4perl qw(:easy);
+#Log::Log4perl->easy_init($INFO);
+
+use Net::Amazon::Request::ASIN;
+use Net::Amazon::Response::ASIN;
+use File::Spec;
+
+my $CANNED = "canned";
+$CANNED = File::Spec->catfile("t", "canned") unless -d $CANNED;
+
+if(! exists $ENV{NET_AMAZON_LIVE_TESTS}) {
+    for(map { File::Spec->catfile($CANNED, $_) }
+        qw(reviews.xml)) {
+        open FILE, "<$_" or die "Cannot open $_";
+        my $data = join '', <FILE>;
+        close FILE;
+        push @Net::Amazon::CANNED_RESPONSES, $data;
+    }
+}
+
+######################################################################
+# Successful ASIN fetch
+######################################################################
+my $ua = Net::Amazon->new(
+    token       => 'YOUR_AMZN_TOKEN',
+);
+
+my $req = Net::Amazon::Request::ASIN->new(
+    asin  => '0201360683'
+);
+
+my $resp = $ua->request($req);
+
+ok($resp->is_success(), "Successful ASIN fetch");
+
+my $result = "";
+
+for my $property ($resp->properties()) {
+    my $reviewset = $property->review_set();
+    $result .= "AVG=" . $reviewset->average_customer_rating() . "," .
+               "TOT=" . $reviewset->total_reviews() . ",";
+    for my $review ($reviewset->reviews()) {
+        $result .= "COM=" . $review->comment() . "," .
+                   "SUM=" . $review->summary() . "," .
+                   "RAT=" . $review->rating() . ",";
+    }
+}
+
+like($result, qr/AVG=4.33,TOT=6,COM=From.*?RAT=4,
+                                COM=Excellent.*?SUM=Perl.*?RAT=5,
+                                COM=I\sbought.*?SUM=Don.*?RAT=2
+                /sx, "customer reviews");
+__END__
+
+AVG=4.33,TOT=6,COM=From its corny title you might expect another one of those sleazy introductions to Perl (I can name a few), but I can happily say that this book is an exception. The overview of the language is excellent and very comprehensible. Even after reading Learning Perl and Programming Perl, I picked up some valuable tips. The chapters on Object Oriented Programming and Perl/Tk are also good. For the Perl/CGI part, you might consider reading additional material, however. All in all, a surprisingly good introduction and reference to Perl 5, both for the beginner and the more advanced programmer.,SUM=Good introduction to Perl, and great reference,RAT=4,COM=Excellent book that gets you started with lots of areas of perl. Most of the code I have tried works fine with Activestates's 523 build and with the perl development kit 1.2.4. Having code that work is rare with these books especially with Windows. I use 98 and NT and unix. This book is not a diffinitive guide to perl but it gives you a good summay in most of the important area's and enought code to get started quickly. It gave me lots of ideas on things I could use perl for. I also like "Perl 5 complete" for theory, but the code for that book is very buggy and hard to get to work. I like its detailed explanation of how things are suppose to work. "Perl Cookbook" is also excellent for how to solve problems various kinds of problems. These are the best of the perl books I have.,SUM=Perl power,RAT=5,COM=I bought this book based on the 5-star reviews - never do THAT again......long on abstract examples that don't mirror the real world, short on logical explanations for the common man(woman).. I have had several other PERL books from the local library that were much better (Castros book is good, don't believe the condescending reviews) - not for the CGI web programmer,SUM=Don't buy this book for CGI programming,RAT=2,
+

Added: packages/libnet-amazon-perl/branches/upstream/current/t/005Power.t
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/t/005Power.t	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/t/005Power.t	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,110 @@
+# Before `make install' is performed this script should be runnable with
+# `make test'. After `make install' it should work as `perl 1.t'
+
+#########################
+
+# change 'tests => 1' to 'tests => last_test_to_print';
+
+use warnings;
+use strict;
+
+use Test::More qw(no_plan);
+BEGIN { use_ok('Net::Amazon') };
+
+use Log::Log4perl qw(:easy);
+#Log::Log4perl->easy_init({level => $DEBUG, file => ">out"});
+
+use Net::Amazon;
+use File::Spec;
+
+my $CANNED = "canned";
+$CANNED = File::Spec->catfile("t", "canned") unless -d $CANNED;
+
+if(! exists $ENV{NET_AMAZON_LIVE_TESTS}) {
+    for(map { File::Spec->catfile($CANNED, $_) }
+        qw(power.xml power_sorted.xml power_empty.xml power.xml)) {
+        open FILE, "<$_" or die "Cannot open $_";
+        my $data = join '', <FILE>;
+        close FILE;
+        push @Net::Amazon::CANNED_RESPONSES, $data;
+    }
+}
+
+######################################################################
+# Successful Power search
+######################################################################
+my $ua = Net::Amazon->new(
+    token       => 'YOUR_AMZN_TOKEN',
+);
+
+my $resp = $ua->search(
+    power => "author: randal schwartz and author: tom phoenix",
+    mode  => "books",
+);
+
+ok($resp->is_success(), "Successful Power fetch");
+like($resp->as_string(), qr/0596004788/, "Found 1");
+like($resp->as_string(), qr/0596001320/, "Found 2");
+is($resp->total_results(), 2, "Found 2 total results");
+
+######################################################################
+# Power search with different sorting method
+######################################################################
+$ua = Net::Amazon->new(
+    token       => 'YOUR_AMZN_TOKEN',
+);
+
+$resp = $ua->search(
+    power => "author: randal schwartz and author: tom phoenix",
+    mode  => "books",
+    sort  => "+pricerank",
+);
+
+ok($resp->is_success(), "Successful sorted power fetch");
+my @prices = ($resp->as_string =~ /\$([\d\.]+)/g);
+my @sorted_prices = sort { $a <=> $b } @prices;
+is("@prices", "@sorted_prices", "Sorted by Price");
+
+######################################################################
+# Power search with empty result
+######################################################################
+$ua = Net::Amazon->new(
+    token       => 'YOUR_AMZN_TOKEN',
+);
+
+$resp = $ua->search(
+    power => "author: randal schwartz and author: mike schilli",
+    mode  => "books",
+);
+
+ok(!$resp->is_success(), "Power fetch came back empty");
+
+######################################################################
+# Similar products (could be with any other search, not just 'power')
+######################################################################
+$ua = Net::Amazon->new(
+    token       => 'YOUR_AMZN_TOKEN',
+);
+
+$resp = $ua->search(
+    power => "author: randal schwartz and author: mike schilli",
+    mode  => "books",
+);
+
+my @expected = qw(
+0596004990
+0596000278
+1565922433
+1565924193
+0596002890
+1565922204
+);
+
+for my $item ($resp->properties()) {
+    for my $asin ($item->similar_asins()) {
+        is(shift @expected, $asin, "Get expected similar product");
+        #print "Similar to ", $item->Asin(), ": $asin\n";
+    }
+}
+
+is(scalar @expected, 0, "Got all expected similar products");

Added: packages/libnet-amazon-perl/branches/upstream/current/t/006Browse.t
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/t/006Browse.t	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/t/006Browse.t	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,55 @@
+# Before `make install' is performed this script should be runnable with
+# `make test'. After `make install' it should work as `perl 1.t'
+
+#########################
+
+# change 'tests => 1' to 'tests => last_test_to_print';
+
+use warnings;
+use strict;
+
+use Test::More qw(no_plan);
+BEGIN { use_ok('Net::Amazon') };
+
+#use Log::Log4perl qw(:easy);
+#Log::Log4perl->easy_init({level => $DEBUG, file => ">out"});
+
+use Net::Amazon;
+use File::Spec;
+
+my $CANNED = "canned";
+$CANNED = File::Spec->catfile("t", "canned") unless -d $CANNED;
+
+if(! exists $ENV{NET_AMAZON_LIVE_TESTS}) {
+    for(map { File::Spec->catfile($CANNED, $_) }
+        qw(browse.xml)) {
+        open FILE, "<$_" or die "Cannot open $_";
+        my $data = join '', <FILE>;
+        close FILE;
+        push @Net::Amazon::CANNED_RESPONSES, $data;
+    }
+}
+
+######################################################################
+# Successful Browse Node search
+######################################################################
+my $ua = Net::Amazon->new(
+    token       => 'YOUR_AMZN_TOKEN',
+);
+
+my $resp = $ua->search(
+    browsenode => 4025,
+    mode       => "books",
+    keywords   => "course",
+);
+
+ok($resp->is_success(), "Successful browse node fetch");
+
+like($resp->as_string(), qr/1571691014/, "Found Cgi Programming Interactive");
+like($resp->as_string(), qr/1562439588/, "Found Mastering Cgi/Perl");
+like($resp->as_string(), qr/1585770671/, "Found: Developing CGI scripts");
+like(($resp->properties())[0]->Availability, qr/Out of Print/, "Checking availability");
+my $nodes = join('&', ($resp->properties())[0]->browse_nodes());
+is($nodes, "CGI (Computer network protocol&Web servers&Computer programs&Computer Interfaces&Data Transmission Systems - General&Computers", "Browse Nodes");
+
+__END__

Added: packages/libnet-amazon-perl/branches/upstream/current/t/007Manufacturer.t
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/t/007Manufacturer.t	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/t/007Manufacturer.t	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,63 @@
+# Before `make install' is performed this script should be runnable with
+# `make test'. After `make install' it should work as `perl 1.t'
+
+#########################
+
+# change 'tests => 1' to 'tests => last_test_to_print';
+
+use warnings;
+use strict;
+
+use Test::More tests => 3;
+BEGIN { use_ok('Net::Amazon') };
+
+use Net::Amazon::Request::Manufacturer;
+use Net::Amazon::Response::Manufacturer;
+use File::Spec;
+
+my $CANNED = "canned";
+$CANNED = File::Spec->catfile("t", "canned") unless -d $CANNED;
+
+#Only for debugging
+#use Log::Log4perl qw(:easy);
+#Log::Log4perl->easy_init($DEBUG);
+
+######################################################################
+# Successful Manufacturer fetch
+######################################################################
+
+canned("manufacturer.xml");
+
+my $ua = Net::Amazon->new(
+    token       => 'YOUR_AMZN_TOKEN',
+);
+
+my $req = Net::Amazon::Request::Manufacturer->new(
+    manufacturer  => 'Black Belt Communications, Inc.',
+);
+
+   # Response is of type Net::Amazon::Manufacturer::Response
+my $resp = $ua->request($req);
+
+ok($resp->is_success(), "Successful fetch");
+
+######################################################################
+# Parameters
+######################################################################
+my $p = ($resp->properties)[0];
+is($p->publisher(), "Black Belt Communications, Inc.","Publisher is Black Belt Communications, Inc.");
+
+######################################################################
+# handle canned responses
+######################################################################
+sub canned {
+    my($file) = @_;
+
+    if(! exists $ENV{NET_AMAZON_LIVE_TESTS} ) {
+        $file = File::Spec->catfile($CANNED, $file);
+        open FILE, "<$file" or die "Cannot open $file";
+        my $data = join '', <FILE>;
+        close FILE;
+        push @Net::Amazon::CANNED_RESPONSES, $data;
+    }
+}

Added: packages/libnet-amazon-perl/branches/upstream/current/t/008Textstream.t
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/t/008Textstream.t	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/t/008Textstream.t	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,56 @@
+# Before `make install' is performed this script should be runnable with
+# `make test'. After `make install' it should work as `perl 1.t'
+
+#########################
+
+# change 'tests => 1' to 'tests => last_test_to_print';
+
+use warnings;
+use strict;
+
+use Test::More tests => 3;
+BEGIN { use_ok('Net::Amazon') };
+
+use Net::Amazon;
+use File::Spec;
+
+my $CANNED = "canned";
+$CANNED = File::Spec->catfile("t", "canned") unless -d $CANNED;
+
+######################################################################
+# Successful textstream fetch
+######################################################################
+
+canned("textstream.xml");
+
+my $ua = Net::Amazon->new(
+    token       => 'YOUR_AMZN_TOKEN',
+);
+
+   # Response is of type Net::Amazon::Textstream::Response
+my $resp = $ua->search(
+    textstream  => "Here's some blurb mentioning the rolling stones",
+);
+
+ok($resp->is_success(), "Successful fetch");
+
+######################################################################
+# Check result
+######################################################################
+my $p = ($resp->properties)[0];
+is($p->publisher(), "Fireside", "Check publisher");
+
+######################################################################
+# handle canned responses
+######################################################################
+sub canned {
+    my($file) = @_;
+
+    if(! exists $ENV{NET_AMAZON_LIVE_TESTS} ) {
+        $file = File::Spec->catfile($CANNED, $file);
+        open FILE, "<$file" or die "Cannot open $file";
+        my $data = join '', <FILE>;
+        close FILE;
+        push @Net::Amazon::CANNED_RESPONSES, $data;
+    }
+}

Added: packages/libnet-amazon-perl/branches/upstream/current/t/009Blended.t
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/t/009Blended.t	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/t/009Blended.t	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,101 @@
+# Before `make install' is performed this script should be runnable with
+# `make test'. After `make install' it should work as `perl 1.t'
+
+#########################
+
+# change 'tests => 1' to 'tests => last_test_to_print';
+
+use warnings;
+use strict;
+
+use Test::More tests => 5;
+BEGIN { use_ok('Net::Amazon') };
+
+use Net::Amazon;
+use File::Spec;
+
+my $CANNED = "canned";
+$CANNED = File::Spec->catfile("t", "canned") unless -d $CANNED;
+$CANNED = File::Spec->catfile("../t", "canned") unless -d $CANNED;
+
+######################################################################
+# Successful textstream fetch
+######################################################################
+
+canned("blended1.xml");
+canned("blendedm.xml");
+
+my $ua = Net::Amazon->new(
+    token       => 'YOUR_AMZN_TOKEN',
+);
+
+   # Response is of type Net::Amazon::Textstream::Response
+my $resp = $ua->search(
+    blended  => "perl",
+);
+
+ok($resp->is_success(), "Successful fetch");
+
+######################################################################
+# Check result
+######################################################################
+my @properties = $resp->properties();
+my $result;
+
+foreach (@properties) {
+    $result .= $_->as_string();
+}
+
+like($result, qr/Flanagan.*?Schwartz.*?Wall/, "single product line");
+
+####################
+# Mult product lines
+####################
+   # Response is of type Net::Amazon::Textstream::Response
+$resp = $ua->search(
+    blended  => "perl",
+);
+
+ok($resp->is_success(), "Successful fetch");
+
+ at properties = $resp->properties();
+
+foreach (@properties) {
+    $result .= $_->as_string();
+}
+
+like($result, qr/Flanagan.*?Tarzan.*?Stainless/, "multiple product linse");
+#print $result;
+
+######################################################################
+# handle canned responses
+######################################################################
+sub canned {
+    my($file) = @_;
+
+    if(! exists $ENV{NET_AMAZON_LIVE_TESTS} ) {
+        $file = File::Spec->catfile($CANNED, $file);
+        open FILE, "<$file" or die "Cannot open $file";
+        my $data = join '', <FILE>;
+        close FILE;
+        push @Net::Amazon::CANNED_RESPONSES, $data;
+    }
+}
+__END__
+my $p = ($resp->properties)[0];
+is($p->publisher(), "Fireside", "Check publisher");
+
+######################################################################
+# handle canned responses
+######################################################################
+sub canned {
+    my($file) = @_;
+
+    if(! exists $ENV{NET_AMAZON_LIVE_TESTS} ) {
+        $file = File::Spec->catfile($CANNED, $file);
+        open FILE, "<$file" or die "Cannot open $file";
+        my $data = join '', <FILE>;
+        close FILE;
+        push @Net::Amazon::CANNED_RESPONSES, $data;
+    }
+}

Added: packages/libnet-amazon-perl/branches/upstream/current/t/010Artist.t
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/t/010Artist.t	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/t/010Artist.t	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,51 @@
+#########################
+# Artist Search tests
+#########################
+use warnings;
+use strict;
+
+use Test::More tests => 10;
+BEGIN { use_ok('Net::Amazon') };
+
+#use Log::Log4perl qw(:easy);
+#Log::Log4perl->easy_init($INFO);
+
+use Net::Amazon;
+use Net::Amazon::Request::Artist;
+
+################################################################
+# Setup
+################################################################
+  my($TESTDIR) = map { -d $_ ? $_ : () } qw(t ../t .);
+  require "$TESTDIR/init.pl";
+  my $CANNED = "$TESTDIR/canned";
+################################################################
+  canned($CANNED, "artist.xml");
+################################################################
+
+my $ua = Net::Amazon->new(
+    token         => 'YOUR_AMZN_TOKEN',
+    # response_dump => 1,
+);
+
+my $req = Net::Amazon::Request::Artist->new(
+    artist  => "Zwan",
+);
+
+   # Response is of type Net::Amazon::Artist::Response
+my $resp = $ua->request($req);
+
+ok($resp->is_success(), "Request successful");
+my @properties = $resp->properties();
+is(scalar @properties, 6, "6 hits");
+
+like($resp->as_string(), qr/Honestly.*?Honestly.*?Honestly/s, "Examine Hits");
+
+ at properties = $resp->properties();
+is($properties[3]->artist, "Zwan", "Check artist");
+is($properties[3]->album, "Lyric / Nobody Cept You / Autumn Leaves", 
+   "Check album");
+is($properties[4]->nummedia, "", "Check nummedia");
+is($properties[4]->media, "Audio CD", "Check media");
+is($properties[0]->label, "Warner Brothers", "Check label");
+is($properties[1]->label, "Import [Generic]", "Check label");

Added: packages/libnet-amazon-perl/branches/upstream/current/t/011Locale.t
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/t/011Locale.t	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/t/011Locale.t	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,42 @@
+
+###########################################
+# Locale "de" test
+# Mike Schilli, 2004 (m at perlmeister.com)
+###########################################
+use warnings;
+use strict;
+
+use Net::Amazon;
+use Net::Amazon::Request::ASIN;
+use Test::More tests => 5;
+
+################################################################
+# Setup
+################################################################
+  my($TESTDIR) = map { -d $_ ? $_ : () } qw(t ../t .);
+  require "$TESTDIR/init.pl";
+  my $CANNED = "$TESTDIR/canned";
+################################################################
+  canned($CANNED, "locale.xml");
+################################################################
+
+#use Log::Log4perl qw(:easy);
+#Log::Log4perl->easy_init({level => $ERROR, layout => '%F{1}-%L: %m%n'});
+
+my $ua = Net::Amazon->new(
+    token         => 'YOUR_AMZN_TOKEN',
+    response_dump => 1,
+    locale        => 'de',
+);
+
+my $resp = $ua->search(
+    asin  => "3827313783",
+);
+
+my($result) = $resp->properties();
+
+ok($resp->is_success(), "ASIN Fetch successful");
+is($result->author(), "Michael Schilli", "Author");
+is($result->title(), "Go To Perl 5 .", "Title");
+is($result->publisher(), "Addison-Wesley", "Publisher");
+is($result->OurPrice(), "EUR 34,95", "Price");


Property changes on: packages/libnet-amazon-perl/branches/upstream/current/t/011Locale.t
___________________________________________________________________
Name: svn:executable
   + 

Added: packages/libnet-amazon-perl/branches/upstream/current/t/012Keyword.t
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/t/012Keyword.t	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/t/012Keyword.t	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,43 @@
+
+###########################################
+# Keyword search tests
+# Mike Schilli, 2004 (m at perlmeister.com)
+###########################################
+use warnings;
+use strict;
+
+use Net::Amazon;
+use Net::Amazon::Property;
+use Net::Amazon::Request::Keyword;
+use Test::More tests => 8;
+
+################################################################
+# Setup
+################################################################
+  my($TESTDIR) = map { -d $_ ? $_ : () } qw(t ../t .);
+  require "$TESTDIR/init.pl";
+  my $CANNED = "$TESTDIR/canned";
+################################################################
+  canned($CANNED, "keyword.xml");
+################################################################
+
+my $ua = Net::Amazon->new(
+    token         => 'YOUR_AMZN_TOKEN',
+    max_pages     => 5,
+    response_dump => 1,
+);
+
+my $req = Net::Amazon::Request::Keyword->new(
+    keyword   => "perl power",
+    mode      => "books",
+);
+
+ # Response: Net::Amazon::Keyword::Response
+my $resp = $ua->request($req);
+
+ok($resp->is_success(), "Successful fetch");
+my @properties = $resp->properties();
+is(scalar @properties, 6, "6 hits");
+for ($resp->properties) {
+   like $_->Asin(), qr/^\d+[\dX]$/, "Check Asin";
+}


Property changes on: packages/libnet-amazon-perl/branches/upstream/current/t/012Keyword.t
___________________________________________________________________
Name: svn:executable
   + 

Added: packages/libnet-amazon-perl/branches/upstream/current/t/013Seller.t
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/t/013Seller.t	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/t/013Seller.t	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,53 @@
+
+###########################################
+# Keyword search tests
+# Mike Schilli, 2004 (m at perlmeister.com)
+###########################################
+use warnings;
+use strict;
+
+use Test::More tests => 7;
+use Net::Amazon;
+use Net::Amazon::Request::Seller;
+use Log::Log4perl qw(:easy);
+#Log::Log4perl->easy_init($DEBUG);
+
+################################################################
+# Setup
+################################################################
+  my($TESTDIR) = map { -d $_ ? $_ : () } qw(t ../t .);
+  require "$TESTDIR/init.pl";
+  my $CANNED = "$TESTDIR/canned";
+################################################################
+  canned($CANNED, "seller.xml");
+################################################################
+
+my $ua = Net::Amazon->new(
+    token       => 'YOUR_AMZN_TOKEN',
+    #response_dump => 1,
+);
+
+my $req = Net::Amazon::Request::Seller->new(
+    seller  => 'A2GXAGU54VOP7',
+);
+
+my $resp = $ua->request(
+    $req,
+);
+
+ok($resp->is_success(), "Successful response");
+ok(defined $resp->result(), "Defined seller result");
+is($resp->result()->as_string(), "myAthenaeum (_athenaeum_): 32000",
+   "Seller result");
+is($resp->result()->StoreId(), "S1CTCSZADC15MI", "StoreId accessor");
+is($resp->result()->as_string(), "myAthenaeum (_athenaeum_): 32000", 
+   "Seller as_string()");
+
+# listings
+my @listings = $resp->result()->listings();
+
+is($listings[0]->ExchangeStartDate(), "05/29/2004 12:58:17 PDT", 
+   "Listing 1 Start Date");
+is($listings[1]->ExchangeStartDate(), "07/09/2004 23:38:08 PDT", 
+   "Listing 2 Start Date");
+


Property changes on: packages/libnet-amazon-perl/branches/upstream/current/t/013Seller.t
___________________________________________________________________
Name: svn:executable
   + 

Added: packages/libnet-amazon-perl/branches/upstream/current/t/014Constructors.t
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/t/014Constructors.t	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/t/014Constructors.t	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,38 @@
+#########################
+# Test all constructors
+#########################
+
+use warnings;
+use strict;
+
+use Test::More tests => 13;
+BEGIN { use_ok('Net::Amazon') };
+
+my @request_types = (
+['Artist'],
+['ASIN'],
+['Blended'],
+['BrowseNode', 'mode'],
+['Keyword', 'mode'],
+['Manufacturer'],
+['Power', 'mode'],
+['Seller'],
+['Similar'],
+['TextStream'],
+['UPC'],
+['Wishlist'],
+);
+
+for my $t (@request_types) {
+    my $class  = $t->[0];
+    my $tlower = lc($t->[0]);
+    my $params = join(', ', map { "$_ => '234'" }
+                     ($tlower, @$t > 1 ? $t->[1] : ()));
+
+    #print "$class $params\n";
+    my $use = "use Net::Amazon::Request::$class";
+    my $new = "Net::Amazon::Request::$class->new($params)";
+    ok(eval "$use; $new", 
+       "$new");
+print $@ if $@;
+}

Added: packages/libnet-amazon-perl/branches/upstream/current/t/015Exchange.t
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/t/015Exchange.t	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/t/015Exchange.t	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,106 @@
+
+###########################################
+# Tests for Exchange requests
+# Mike Schilli, 2004 (m at perlmeister.com)
+###########################################
+use warnings;
+use strict;
+
+use Test::More tests => 25;
+use Net::Amazon;
+use Net::Amazon::Result::Seller::Listing;
+use Log::Log4perl qw(:easy);
+#Log::Log4perl->easy_init($DEBUG);
+
+################################################################
+# Setup
+################################################################
+  my($TESTDIR) = map { -d $_ ? $_ : () } qw(t ../t .);
+  require "$TESTDIR/init.pl";
+  my $CANNED = "$TESTDIR/canned";
+################################################################
+  canned($CANNED, "exchange.xml");
+################################################################
+
+my $ua = Net::Amazon->new(
+    token       => 'YOUR_AMZN_TOKEN',
+    #response_dump => 1,
+);
+
+# Get a request object
+my $resp = $ua->search(exchange => 'Y04Y3424291Y2398445');
+
+ok($resp->is_success(), "Successful response");
+ok(defined $resp->result(), "Defined seller result");
+
+like($resp->result()->as_string(), qr/^Bold Visions.*\(1555913164\)/,
+   "Exchange result as string");
+
+my $listing = $resp->result();
+
+is($listing->ExchangeStartDate(), "02/19/2005 04:32:20 PST", 
+   "Listing Exchange Start Date");
+
+is($listing->ExchangeAsin(), "1555913164", 
+   "Listing Exchange ASIN");
+
+is($listing->ExchangeConditionType(), "verygood", 
+   "Listing ExchangeConditionType");
+
+is($listing->ExchangeAsin(), "1555913164", 
+   "Listing ExchangeAsin");
+
+is($listing->ExchangeSellerId(), "AZPQKLIWQKVZ", 
+    "Listing ExchangeSellerId");
+
+is($listing->ExchangeEndDate(), "02/04/2008 04:32:20 PST", 
+    "Listing ExchangeEndDate");
+
+is($listing->ExchangePrice(), '$11.95', 
+    "Listing ExchangePrice");
+
+is($listing->ExchangeSellerRating(), "4.7", 
+    "Listing ExchangeSellerRating");
+
+is($listing->ExchangeStatus(), "Open", 
+    "Listing ExchangeStatus");
+
+is($listing->ExchangeId(), "Y04Y3424291Y2398445", 
+    "Listing ExchangeId");
+
+is($listing->ExchangeTitle(), "Bold Visions for the Garden: " .
+    "Basics, Magic & Inspiration [Paperback]  by...", 
+    "Listing ExchangeTitle");
+
+is($listing->ExchangeQuantityAllocated(), "0", 
+    "Listing ExchangeQuantityAllocated");
+
+is($listing->ExchangeQuantity(), "1", 
+    "Listing ExchangeQuantity");
+
+is($listing->ExchangeSellerCountry(), "", 
+    "Listing ExchangeSellerCountry");
+
+is($listing->ExchangeSellerState(), "", 
+    "Listing ExchangeSellerState");
+
+is($listing->ExchangeSellerNickname(), "powells_books", 
+    "Listing ExchangeSellerNickname");
+
+is($listing->ExchangeFeaturedCategory(), "68297", 
+    "Listing ExchangeFeaturedCategory");
+
+is($listing->ExchangeAvailability(), "Usually ships in 1-2 business days",
+    "Listing ExchangeAvailability");
+
+is($listing->ExchangeOfferingType(), "used", 
+    "Listing ExchangeOfferingType");
+
+is($listing->ListingId(), "0219T568068", 
+    "Listing ListingId");
+
+is($listing->ExchangeCondition(), "", 
+    "Listing ExchangeCondition");
+
+is($listing->ExchangeDescription(), "Title: Bold Visions for the Garden: Basics, Magic & Inspiration\n: Hartlage, Richard W.\n", "Listing ExchangeDescription");
+


Property changes on: packages/libnet-amazon-perl/branches/upstream/current/t/015Exchange.t
___________________________________________________________________
Name: svn:executable
   + 

Added: packages/libnet-amazon-perl/branches/upstream/current/t/canned/artist.xml
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/t/canned/artist.xml	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/t/canned/artist.xml	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,295 @@
+<?xml version="1.0" encoding="UTF-8"?><ProductInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xml.amazon.com/schemas3/dev-heavy.xsd">
+
+<Request><Args><Arg value="libwww-perl/5.76" name="UserAgent"></Arg><Arg value="0RCGS44ZYXCAT3PCW6WD" name="RequestID"></Arg><Arg value="us" name="locale"></Arg><Arg value="1" name="page"></Arg><Arg value="YOUR_AMZN_TOKEN" name="dev-t"></Arg><Arg value="webservices-20" name="t"></Arg><Arg value="Zwan" name="ArtistSearch"></Arg><Arg value="xml" name="f"></Arg><Arg value="music" name="mode"></Arg><Arg value="heavy" name="type"></Arg><Arg value="+salesrank" name="sort"></Arg></Args></Request>   <TotalResults>6</TotalResults>
+   <TotalPages>1</TotalPages>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B00007M84Q/webservices-20?dev-t=YOUR_AMZN_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>B00007M84Q</Asin>
+      <ProductName>Mary Star of the Sea</ProductName>
+      <Catalog>Music</Catalog>
+      <Artists>
+         <Artist>Zwan</Artist>
+      </Artists>
+      <ReleaseDate>28 January, 2003</ReleaseDate>
+      <Manufacturer>Warner Brothers</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B00007M84Q.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B00007M84Q.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B00007M84Q.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$18.98</ListPrice>
+      <OurPrice>$14.99</OurPrice>
+      <UsedPrice>$3.49</UsedPrice>
+      <CollectiblePrice>$8.00</CollectiblePrice>
+      <ThirdPartyNewPrice>$8.48</ThirdPartyNewPrice>
+      <SalesRank>15,122</SalesRank>
+      <Lists>
+         <ListId>38HLDGYYACWGJ</ListId>
+         <ListId>12BXWA007FDXD</ListId>
+         <ListId>2U7FNYTRHN7CP</ListId>
+      </Lists>
+      <Tracks>
+         <Track>Lyric</Track>
+         <Track>Settle Down</Track>
+         <Track>Declarations Of Faith</Track>
+         <Track>Honestly</Track>
+         <Track>El Sol</Track>
+         <Track>Of A Broken Heart</Track>
+         <Track>Ride A Black Swan</Track>
+         <Track>Heartsong</Track>
+         <Track>Endless Summer</Track>
+         <Track>Baby Let's Rock!</Track>
+         <Track>Yeah!</Track>
+         <Track>Desire</Track>
+         <Track>Jesus,I / Mary Star Of The Sea</Track>
+         <Track>Come With Me</Track>
+      </Tracks>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Pop</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Rock</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Audio CD</Media>
+      <Availability>Usually ships within 24 hours</Availability>
+      <Upc>093624843627</Upc>
+      <ProductDescription>Having dramatically misjudged their audience's loyalty to skewed, art-damaged heavy metal, the Smashing Pumpkins called it a day shortly after the release of 2000's low-grossing &lt;I>Machina/The Machines of God&lt;/I>. Three years later, frontman Billy Corgan returns with an all-star team of mostly Chicago indie rockers at his side, including Slint/Tortoise guitarist Dave Pajo, Skunk guitarist Matt Sweeney, A Perfect Circle bassist Paz Lenchantin, and fellow Pumpkin Jimmy Chamberlain on drums. But Zwan has not blunted the singer's flamboyant edge. His bonkers vocal gymnastics and whisper-to-a-scream choruses remain at the black heart of &lt;I>Mary Star of the Sea&lt;/I>, as the group works its way through the rich melodies of new classics like "Honestly" and "Endless Summer," and pleasingly shifts into downtempo mood on the gorgeous "Of a Broken Heart" and gripping "Desire." And while Corgan's tendency toward self-indulgence results in the tedious 14-minute "Jesus, I/Mary Star of the Sea," it is just a minor lapse considering the rest of the big, glamorous rock on display here. &lt;I>--Aidin Vaziri&lt;/I></ProductDescription>
+      <Reviews>
+         <AvgCustomerRating>3.96</AvgCustomerRating>
+         <TotalCustomerReviews>177</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>ZWAN are the 'it' band right now!</Summary>
+            <Comment>In a world filled with "American Idols", pop divas like Britney, Beyonce, and X-tina, and hip-hop...such as 50 Cent (can I get change please?), Eminem, and the illiterate Fabolous, ZWAN really shines in this dull musical landscape. Headed by ex-Smashing Pumpkins' frontman Billy Corgan, Zwan gives us music lovers the integrity, ingenuity, and creativity music should be about. Corgan is not going to write, direct, and star in a movie in the near future, and is that so bad?! Songs like "Lyric" start off the album with 'alternative' drum beats (please, no computer programming!), and "Settle Down" strips it down to melody and keeps the music heartfelt, yet hard, which is in line w/ Corgan's trademark. The epic of this album, "Jesus I/Mary Star of the Sea", is the 14 minute jam of this album, and "Come with Me" concludes the album with a mellow sound. Zwan are not the Pumpkins, or Skunk or A Perfect Circle for that matter, but introduce music to a new sound altogether, which is refreshing! Zwan goes back to basics: rock!! This is my take...</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>Billy's Back!!!</Summary>
+            <Comment>It's great to hear some excellent Billy Corgan music again. Having abandoned the bombast of later Pumpkins work, Billy (with some mighty impressive drum work from Jimmy Chamberlain) has rebuilt his sound around a more raw yet optimistic approach to recording. The band Zwan, and the CD Mary Star of the Sea, have instantly become as vital as early Pumpkins, and a lot more fun to listen to.&lt;BR>This disc is first, and foremost, a rock album. And Billy writes rock tunes like no one else of his generation. "Honestly", the first single, has relaxed (not whiny) vocals, propulsive guitars and a driving drumbeat that is as good as anything on the radio today. It's also got a hook that takes residence in your brain for days. And it's probably the 3rd or 4th best track on the album. "Of A Broken Heart" is destined to be an FM Radio classic - a beautiful rock ballad, crisply recorded with seductive instrumentation, and Billy's best vocal work since "Perfect". "Desire" gives Jimmy Chamberlain the opportunity to show why he is the best drummer to emerge from the American Alternative Rock movement of the early 90's. And the epic Jesus I/Mary Star of the Sea is everything you love (or hate, because some will label the track typical Billy) about a Corgan opus - a 14 minute songs that shifts in styles, melodies and vocals from a quiet hymn to jangly guitar anthem (among other movements). It's a true pleasure, brilliantly conceived and executed. I can't wait to hear it live.&lt;BR>This disc is going to be on a lot of Top Ten lists by the end of the year - it's a wonderful, melodic recording, and a very welcome return for the incredible Billy Corgan.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>Zwan is pretty gay but....</Summary>
+            <Comment>(...)Either you take Zwan as it was or go f*** yourself.&lt;P>This is their only album and it has a lot of strong songs. Tracks 1-3 are excellent. I don't really care for "Honestly" anymore. "El Sol" is good. "Ride a Black Swan" should have been a single. "Yeah" should have been another single. "Jesus I/Mary Star of the Sea" is long but it's nice to hear Billy's guitar work. "Come With Me" sucks.&lt;P>I like this record alot. But I can understand why people don't like it. So I recommend you borrow this from a friend first, or from you local library, and then decide whether you want to buy it.</Comment>
+         </CustomerReview>
+      </Reviews>
+      <SimilarProducts>
+         <Product>B000042OI4</Product>
+         <Product>B000006NPY</Product>
+         <Product>B00005RGFU</Product>
+         <Product>B000000W6R</Product>
+         <Product>B000000WJZ</Product>
+      </SimilarProducts>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B000084HC0/webservices-20?dev-t=YOUR_AMZN_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>B000084HC0</Asin>
+      <ProductName>Honestly</ProductName>
+      <Catalog>Music</Catalog>
+      <Artists>
+         <Artist>Zwan</Artist>
+      </Artists>
+      <ReleaseDate>08 April, 2004</ReleaseDate>
+      <Manufacturer>Import [Generic]</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B000084HC0.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B000084HC0.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B000084HC0.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$12.99</ListPrice>
+      <OurPrice>$12.99</OurPrice>
+      <UsedPrice>$4.31</UsedPrice>
+      <ThirdPartyNewPrice>$4.99</ThirdPartyNewPrice>
+      <SalesRank>26,320</SalesRank>
+      <Tracks>
+         <Track>Honestly</Track>
+         <Track>Number Of The Beast</Track>
+         <Track>Freedom Aint What It Used To Be</Track>
+      </Tracks>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Pop</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Rock</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Audio CD</Media>
+      <Features>
+         <Feature>CD-single</Feature>
+         <Feature>Import</Feature>
+      </Features>
+      <Availability>THIS TITLE IS CURRENTLY NOT AVAILABLE. If you would like to purchase this title, we recommend that you occasionally check this page to see if it has become available.</Availability>
+      <Upc>093624260929</Upc>
+      <Reviews>
+         <AvgCustomerRating>5</AvgCustomerRating>
+         <TotalCustomerReviews>3</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>Great intro to Djali Zwan</Summary>
+            <Comment>Honestly is a great song but the main reason to buy this single are for the two extra songs. Also because it's a great intro to one of Zwan's incarnations, Djali Zwan which has all to do with acoustics. It has and excellent cover of Iron Maiden's "Number of the Beast" sung by Matt Sweeney and a favorite Djali Zwan song of mine "Freedom ain't What it Used to Be" Again this single is a buy for these 2 songs alone and a great intro to Djali Zwan.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>2 Great Mellow Acoustic B-Sides</Summary>
+            <Comment>This Australian [EP] for the Single "Honestly" offers two great B-Sides and is worth checking out! The two tracks consist of one cover done by I believe Matt Sweeney and one original Corgan tune done by Billy with Matt &amp; "Linda Strawberry" doing backup vocals.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>Honestly a great single</Summary>
+            <Comment>From the first time I heard the song Wasting Time i was in love with zwan. I am a long time fan of the Smashing Pumpkins, so to see Billy Corgan back making music again I was thrilled! Wasting Time didn't make it very far, but then the song, and feature of this CD, Honestly came out. I wouldn't call it one of Zwan's best, after hearing the rest of their first album Mary Star Of The Sea, but all in all, it's an awsome song. Freedom Ain't What it used to be is an incredible ending to this single, really showing Billy's new true colours...</Comment>
+         </CustomerReview>
+      </Reviews>
+      <SimilarProducts>
+         <Product>B00009N1U9</Product>
+         <Product>B00008K50F</Product>
+         <Product>B00005JM23</Product>
+         <Product>B00004S34Z</Product>
+         <Product>B00005RG0M</Product>
+      </SimilarProducts>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B00008K50F/webservices-20?dev-t=YOUR_AMZN_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>B00008K50F</Asin>
+      <ProductName>Honestly / Number of the Beast</ProductName>
+      <Catalog>Music</Catalog>
+      <Artists>
+         <Artist>Zwan</Artist>
+      </Artists>
+      <ReleaseDate>25 April, 2003</ReleaseDate>
+      <Manufacturer>Import [Generic]</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B00008K50F.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B00008K50F.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B00008K50F.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$12.99</ListPrice>
+      <OurPrice>$12.99</OurPrice>
+      <ThirdPartyNewPrice>$4.59</ThirdPartyNewPrice>
+      <SalesRank>154,680</SalesRank>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Pop</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Rock</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Audio CD</Media>
+      <Features>
+         <Feature>CD-single</Feature>
+         <Feature>Import</Feature>
+      </Features>
+      <Availability>Special Order</Availability>
+      <Upc>054391667120</Upc>
+      <SimilarProducts>
+         <Product>B000084HC0</Product>
+         <Product>B00009N1U9</Product>
+         <Product>B00005JM23</Product>
+         <Product>B000255LAC</Product>
+      </SimilarProducts>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B00009N1U9/webservices-20?dev-t=YOUR_AMZN_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>B00009N1U9</Asin>
+      <ProductName>Lyric / Nobody Cept You / Autumn Leaves</ProductName>
+      <Catalog>Music</Catalog>
+      <Artists>
+         <Artist>Zwan</Artist>
+      </Artists>
+      <ReleaseDate>03 June, 2003</ReleaseDate>
+      <Manufacturer>Wea International</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B00009N1U9.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B00009N1U9.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B00009N1U9.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$12.99</ListPrice>
+      <OurPrice>$12.99</OurPrice>
+      <SalesRank>48,404</SalesRank>
+      <Lists>
+         <ListId>1O9DPT5CSTYI4</ListId>
+      </Lists>
+      <Tracks>
+         <Track>Lyric</Track>
+         <Track>Nobody Cept You (Live)</Track>
+         <Track>Autumn Leaves (Live)</Track>
+      </Tracks>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Pop</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Rock</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Audio CD</Media>
+      <Features>
+         <Feature>CD-single</Feature>
+         <Feature>Import</Feature>
+      </Features>
+      <Availability>THIS TITLE IS CURRENTLY NOT AVAILABLE. If you would like to purchase this title, we recommend that you occasionally check this page to see if it has become available.</Availability>
+      <Upc>093624262428</Upc>
+      <Reviews>
+         <AvgCustomerRating>3.5</AvgCustomerRating>
+         <TotalCustomerReviews>2</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>2</Rating>
+            <Summary>meh.</Summary>
+            <Comment>i like all three songs. it's an okay single, i guess, but it seemed like zwan half-*ssed this single by not bothering to include studio tracks. both of the b-sides are live recordings from the hideout shows.....&lt;P>it just would have been nice for them to put a little more effort into a single, and give the fans something we didn't already have.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>just zwanderful!!!!</Summary>
+            <Comment>this single is great! lyric is a beautiful song that makes me feel so happy when i hear it... you must get it!!! you'll become a fan forever!!</Comment>
+         </CustomerReview>
+      </Reviews>
+      <SimilarProducts>
+         <Product>B000084HC0</Product>
+         <Product>B00005RG0M</Product>
+         <Product>B0000073W8</Product>
+         <Product>B000000WFL</Product>
+         <Product>B00008K50F</Product>
+      </SimilarProducts>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B000084T5E/webservices-20?dev-t=YOUR_AMZN_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>B000084T5E</Asin>
+      <ProductName>Mary Star of the Sea</ProductName>
+      <Catalog>Music</Catalog>
+      <Artists>
+         <Artist>Zwan</Artist>
+      </Artists>
+      <Manufacturer>Phantom</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B000084T5E.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B000084T5E.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B000084T5E.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$236.49</ListPrice>
+      <OurPrice>$236.49</OurPrice>
+      <CollectiblePrice>$19.95</CollectiblePrice>
+      <ThirdPartyNewPrice>$30.27</ThirdPartyNewPrice>
+      <Media>Audio CD</Media>
+      <Features>
+         <Feature>Import</Feature>
+      </Features>
+      <Availability>Usually ships within 1 to 2 weeks</Availability>
+      <Upc>093624843610</Upc>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B00008UVDM/webservices-20?dev-t=YOUR_AMZN_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>B00008UVDM</Asin>
+      <ProductName>Honestly</ProductName>
+      <Catalog>Music</Catalog>
+      <Artists>
+         <Artist>Zwan</Artist>
+      </Artists>
+      <ReleaseDate>24 February, 2003</ReleaseDate>
+      <Manufacturer>Wea</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B00008UVDM.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B00008UVDM.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B00008UVDM.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$11.99</ListPrice>
+      <OurPrice>$11.99</OurPrice>
+      <SalesRank>328,948</SalesRank>
+      <Tracks>
+         <Track>Honestly</Track>
+         <Track>Number Of The Beast</Track>
+         <Track>Freedom Ain't What It Used To Be</Track>
+      </Tracks>
+      <Media>Audio CD</Media>
+      <Features>
+         <Feature>CD-single</Feature>
+         <Feature>Import</Feature>
+      </Features>
+      <Availability>THIS TITLE IS CURRENTLY NOT AVAILABLE. If you would like to purchase this title, we recommend that you occasionally check this page to see if it has become available.</Availability>
+      <Upc>667342760629</Upc>
+   </Details>
+</ProductInfo>

Added: packages/libnet-amazon-perl/branches/upstream/current/t/canned/asin_cd.xml
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/t/canned/asin_cd.xml	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/t/canned/asin_cd.xml	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?><ProductInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xml.amazon.com/schemas2/dev-lite.xsd">
+
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B00007M84Q/webservices-20?dev-t=YOUR_AMZN_TOKEN">
+      <Asin>B00007M84Q</Asin>
+      <ProductName>Mary Star of the Sea</ProductName>
+      <Catalog>Music</Catalog>
+      <Artists>
+         <Artist>Zwan</Artist>
+      </Artists>
+      <ReleaseDate>28 January, 2003</ReleaseDate>
+      <Manufacturer>Warner Brothers</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B00007M84Q.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B00007M84Q.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B00007M84Q.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$18.98</ListPrice>
+      <OurPrice>$13.99</OurPrice>
+      <UsedPrice>$7.50</UsedPrice>
+   </Details>
+</ProductInfo>

Added: packages/libnet-amazon-perl/branches/upstream/current/t/canned/asin_cdm.xml
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/t/canned/asin_cdm.xml	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/t/canned/asin_cdm.xml	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?><ProductInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xml.amazon.com/schemas2/dev-lite.xsd">
+
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B00005A46I/webservices-20?dev-t=YOUR_AMZN_TOKEN">
+      <Asin>B00005A46I</Asin>
+      <ProductName>For the Stars</ProductName>
+      <Catalog>Music</Catalog>
+      <Artists>
+         <Artist>Anne Sofie von Otter</Artist>
+         <Artist>Elvis Costello</Artist>
+      </Artists>
+      <ReleaseDate>10 April, 2001</ReleaseDate>
+      <Manufacturer>Polygram Records</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B00005A46I.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B00005A46I.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B00005A46I.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$17.98</ListPrice>
+      <OurPrice>$14.99</OurPrice>
+      <UsedPrice>$8.68</UsedPrice>
+   </Details>
+</ProductInfo>

Added: packages/libnet-amazon-perl/branches/upstream/current/t/canned/asin_err.xml
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/t/canned/asin_err.xml	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/t/canned/asin_err.xml	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?><ProductInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xml.amazon.com/schemas2/dev-lite.xsd">
+
+   <ErrorMsg>Invalid Asin : 123</ErrorMsg>
+</ProductInfo>

Added: packages/libnet-amazon-perl/branches/upstream/current/t/canned/asin_mua.xml
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/t/canned/asin_mua.xml	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/t/canned/asin_mua.xml	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?><ProductInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xml.amazon.com/schemas2/dev-lite.xsd">
+
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/0201633612/webservices-20?dev-t=YOUR_AMZN_TOKEN">
+      <Asin>0201633612</Asin>
+      <ProductName>Design Patterns</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>Erich Gamma</Author>
+         <Author>Richard Helm</Author>
+         <Author>Ralph Johnson</Author>
+         <Author>John Vlissides</Author>
+      </Authors>
+      <ReleaseDate>15 January, 1995</ReleaseDate>
+      <Manufacturer>Addison-Wesley Pub Co</Manufacturer>
+      <Media>Hardcover</Media>
+      <ImageUrlSmall>http://images.amazon.com/images/P/0201633612.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/0201633612.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/0201633612.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$54.99</ListPrice>
+      <OurPrice>$48.12</OurPrice>
+      <UsedPrice>$35.50</UsedPrice>
+   </Details>
+</ProductInfo>

Added: packages/libnet-amazon-perl/branches/upstream/current/t/canned/asin_pp.xml
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/t/canned/asin_pp.xml	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/t/canned/asin_pp.xml	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?><ProductInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xml.amazon.com/schemas2/dev-lite.xsd">
+
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/0201360683/webservices-20?dev-t=YOUR_AMZN_TOKEN">
+      <Asin>0201360683</Asin>
+      <ProductName>Perl Power!: A JumpStart Guide to Programming with Perl 5</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>Michael Schilli</Author>
+      </Authors>
+      <ReleaseDate>16 December, 1998</ReleaseDate>
+      <Manufacturer>Addison-Wesley Pub Co</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/0201360683.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/0201360683.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/0201360683.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$39.99</ListPrice>
+      <OurPrice>$39.99</OurPrice>
+      <UsedPrice>$3.00</UsedPrice>
+   </Details>
+</ProductInfo>

Added: packages/libnet-amazon-perl/branches/upstream/current/t/canned/blended1.xml
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/t/canned/blended1.xml	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/t/canned/blended1.xml	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,271 @@
+<?xml version="1.0" encoding="UTF-8"?><BlendedSearch xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xml.amazon.com/schemas3/dev-heavy.xsd">
+
+<Request><Args><Arg value="libwww-perl/5.76" name="UserAgent"></Arg><Arg value="Perl" name="BlendedSearch"></Arg><Arg value="1EY7JMTH3HMTTD6K2GMA" name="RequestID"></Arg><Arg value="us" name="locale"></Arg><Arg value="1" name="page"></Arg><Arg value="AMAZON_TOKEN" name="dev-t"></Arg><Arg value="webservices-20" name="t"></Arg><Arg value="xml" name="f"></Arg><Arg value="books" name="mode"></Arg><Arg value="heavy" name="type"></Arg><Arg value="+salesrank" name="sort"></Arg></Args></Request><ProductLine>
+   <Mode>books</Mode>
+   <RelevanceRank>1</RelevanceRank>
+<ProductInfo>
+   <TotalResults>708</TotalResults>
+   <TotalPages>71</TotalPages>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/0596000480/webservices-20?dev-t=AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>0596000480</Asin>
+      <ProductName>JavaScript: The Definitive Guide</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>David Flanagan</Author>
+      </Authors>
+      <ReleaseDate>15 December, 2001</ReleaseDate>
+      <Manufacturer>O'Reilly &amp; Associates</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/0596000480.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/0596000480.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/0596000480.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$44.95</ListPrice>
+      <OurPrice>$31.46</OurPrice>
+      <UsedPrice>$26.99</UsedPrice>
+      <CollectiblePrice>$19.95</CollectiblePrice>
+      <ThirdPartyNewPrice>$28.98</ThirdPartyNewPrice>
+      <SalesRank>1,607</SalesRank>
+      <Lists>
+         <ListId>IEF1DNVKZO8B</ListId>
+         <ListId>1446GTNVA7HF2</ListId>
+         <ListId>1R36BE3AUD988</ListId>
+      </Lists>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Computer Bks - Languages / Programming</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computer Books: Languages</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computer Networks</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computer Programming Languages</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computers</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>JavaScript (Computer program language)</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Object-oriented programming (Computer science)</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Programming - General</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Programming - Object Oriented Programming</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Programming Languages - CGI, Javascript, Perl, VBScript</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Programming Languages - Java</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Web servers</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Java &amp; variants</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Paperback</Media>
+      <NumMedia>1</NumMedia>
+      <Isbn>0596000480</Isbn>
+      <Availability>Usually ships within 24 hours</Availability>
+      <ProductDescription>Since the earliest days of Internet scripting, Web developers have considered &lt;I>JavaScript: The Definitive Guide&lt;/I> an essential resource. David Flanagan's approach, which combines tutorials and examples with easy-to-use syntax guides and object references, suits the typical programmer's requirements nicely. The brand-new fourth edition of Flanagan's "Rhino Book" includes coverage of JavaScript 1.5, JScript 5.5, ECMAScript 3, and the Document Object Model (DOM) Level 2 standard from the World Wide Web Consortium (W3C). Interestingly, the author has shifted away from specifying--as he did in earlier editions--what browsers support each bit of the language. Rather than say Netscape 3.0 supports the Image object while Internet Explorer 3.0 does not, he specifies that JavaScript 1.1 and JScript 3.0 support Image. More usefully, he specifies the contents of independent standards like ECMAScript, which encourages scripters to write applications for these standards and browser vendors to support them. As Flanagan says, JavaScript and its related subjects are very complex in their pure forms. It's impossible to keep track of the differences among half a dozen vendors' generally similar implementations. Nonetheless, a lot of examples make reference to specific browsers' capabilities.&lt;p>  Though he does not cover server-side APIs, Flanagan has chosen to separate coverage of core JavaScript (all the keywords, general syntax, and utility objects like Array) from coverage of client-side JavaScript (which includes objects, like History and Event, that have to do with Web browsers and users' interactions with them. This approach makes this book useful to people using JavaScript for applications other than Web pages. By the way, the other classic JavaScript text--Danny Goodman's &lt;I>JavaScript Bible&lt;/I>--isn't as current as this book, but it's still a fantastic (and perhaps somewhat more novice-friendly) guide to the JavaScript language and its capabilities. &lt;I>--David Wall&lt;/I>&lt;p>  &lt;B>Topics covered:&lt;/B> The JavaScript language (version 1.0 through version 1.5) and its relatives, JScript and ECMAScript, as well as the W3C DOM standards they're often used to manipulate. Tutorial sections show how to program in JavaScript, while reference sections summarize syntax and options while providing copious code examples.</ProductDescription>
+      <Reviews>
+         <AvgCustomerRating>4.31</AvgCustomerRating>
+         <TotalCustomerReviews>191</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>Definitive is the word I would use.</Summary>
+            <Comment>I have tried several books on Javascritping and while they all seem to have the same format of learning, this book draws from a different line of thought, make it simple and you can learn. This book may just be the definitive guide to learning Javascritping.&lt;P> &lt;P>Starting off this 750 plus page book is the explanation how JavaScript works from the client side and then from the server side of the things. This understanding is crucial to making sure your code is set up properly and that is works correctly the first time.&lt;P> &lt;P>Other topics covered in the book include data types, values, variables, expressions, operators, functions, objects and arrays. All of these topics are detailed yet simplified so even I could understand the nature of the text.&lt;P> &lt;P>Moving on you'll also cover how to setup windows, frames, DOM, events, forms, DHTML, cookies and security. All this is coupled with actual code screen shots to show you what the final outcome should look like.&lt;P> &lt;P>The author's ability to break down each topic and show you what you need to know in order to write the best possible code is the basis of this book. Overall this book is one to have and use on a constant basis.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>Best reference on JavaScript I have ever seen</Summary>
+            <Comment>I have read many books on JavaScript before but this is by far the most comprehansive guide to the scripting language. This book is not for beginners. &lt;BR>I use it as a reference guide. If you know the object's name or the method's name on either client side or server side, you can just look it up in this book's index section and it will reference you to a particular page with detailed explonations and more often then not with examples. &lt;BR>Absolutely love this book</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>Must have for learning and reference</Summary>
+            <Comment>As a long time C++ programmer, I found this book to be neither too hard or too easy. Readers with no programming experience at all might have a harder time with the text, but if you have any kind of programming background, the text will serve you well. As a reference, the text is second to none. Even the DOM reference is one of the best out there.</Comment>
+         </CustomerReview>
+      </Reviews>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/0596001320/webservices-20?dev-t=AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>0596001320</Asin>
+      <ProductName>Learning Perl, Third Edition</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>Randal L. Schwartz</Author>
+         <Author>Tom Phoenix</Author>
+      </Authors>
+      <ReleaseDate>15 July, 2001</ReleaseDate>
+      <Manufacturer>O'Reilly &amp; Associates</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/0596001320.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/0596001320.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/0596001320.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$34.95</ListPrice>
+      <OurPrice>$23.77</OurPrice>
+      <UsedPrice>$20.50</UsedPrice>
+      <CollectiblePrice>$17.95</CollectiblePrice>
+      <ThirdPartyNewPrice>$22.94</ThirdPartyNewPrice>
+      <SalesRank>1,032</SalesRank>
+      <Lists>
+         <ListId>1OQV9AGCQG0ED</ListId>
+         <ListId>1T2AN3P86O3Z6</ListId>
+         <ListId>343HS65N1SO1Z</ListId>
+      </Lists>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Computer Bks - Languages / Programming</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computer Books: General</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computers</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Perl (Computer language)</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Perl (Computer program languag</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Perl (Computer program language)</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Programming Languages - CGI, Javascript, Perl, VBScript</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Internet languages</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Programming languages</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Paperback</Media>
+      <NumMedia>1</NumMedia>
+      <Isbn>0596001320</Isbn>
+      <Availability>Usually ships within 24 hours</Availability>
+      <Upc>636920001324</Upc>
+      <ProductDescription>In this smooth, carefully paced course, a leading Perl trainer  teaches you to program in the language that threatens to make C, sed, awk, and the Unix shell obsolete for many tasks.  This book is the "official" guide for both formal (classroom) and informal learning.  It is fully  accessible to the novice programmer.</ProductDescription>
+      <Reviews>
+         <AvgCustomerRating>4.21</AvgCustomerRating>
+         <TotalCustomerReviews>238</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>3</Rating>
+            <Summary>Not really for absolute beginners</Summary>
+            <Comment>This book calls itself "Learning Perl," apparently because it is geared towards beginners. However, upon reading more and more of this book, it becomes increasingly clear that this book is not at all a learning tool, as it is a good reference for those who already learned the basics of Perl. The first chapter should be skipped over entirely if you're a beginner, because it will do nothing more than confuse you and turn you off to Perl. The subsequent chapters covers all relevant topics, but they skimp on providing descriptive key examples which would help you to better understand the concept. This book makes too many references to C and other languages, implying that you already know previous programming languages. The chapter on regular expressions is shamefully cursory and lacking in examples which can be adequately picked up by the Perl novice. The language of the text is not for the beginner user, as it throws around too many Perl-centric terms and definitions. For an intermediate, this may be sufficient, but it will not do for the beginner. I recommend Perl for Dummies as the ultimate beginner's tool. That book doesn't cover as many topics as this book, but it certainly explains conceps in a much more novice-friendly language than Learning Perl. Learning Perl makes the mistake of not keeping it simple. This is a very important teaching idea, when your expected audience are complete novices who need to have everything explained to them in basic layman's terms. This book is more of a sophisticated primer for already skilled programmers.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>Top of the line</Summary>
+            <Comment>This is as good as it gets.&lt;P>The writing style is fun throughout, the chosen examples interesting, organization very well thought out, presentation clear. You pick it up and you will keep reading.&lt;P>The first chapter gives an overview of what the language can do via an example ("guess the secret word") which is developed more and more using more and more features of the language.&lt;P>In your average programming book the examples are tortured and boring so that it's hard to keep reading. Not so here.&lt;BR>Everything is well motivated and the writing style is amusing throughout.&lt;P>If you are coming from a system language background you will be hooked immediately. The ease with which many tasks are dealt with in Perl is astonishing.&lt;P>The amusing style and excellent presentation is kept up in all chapters of the book. The book will give you an overview of the language and basic skills. &lt;P>None of the programming books I have seen comes close to explaining basic constructs as clearly as this one. If this is your first book of first language you are very lucky.&lt;P>You will feel the need for an in depth presentation. This is not a criticism of the book. What's presented here is already very powerful.&lt;BR>Even after 2 days I was able to write a script doing some useful work I could not otherwise have accomplished. &lt;P>Perl is too rich to give an exhaustive treatment in 260 pages. You'll need Larry Wall's book also and this is clearly stated in the book.&lt;P>This book makes learning Perl fun and will create a lot of fans for the language. It's the perfect entry and will keep you strongly motivated to delve deeper.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>A great introduction</Summary>
+            <Comment>This book is aimed at Perl novices and sys admins who need to get up to speed quickly. As with most O'Reilly books I found the authors know thier stuff and the book was well edited. &lt;P>The book contains enough info to allow you to script most sys admin tasks, and has the benefit of being short and therefore easy to carry, but once you get a taste of Perl's power you will no doubt want to get the "camel" (programming perl), which is more comprehensive.</Comment>
+         </CustomerReview>
+      </Reviews>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/0596000278/webservices-20?dev-t=AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>0596000278</Asin>
+      <ProductName>Programming Perl (3rd Edition)</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>Larry Wall</Author>
+         <Author>Tom Christiansen</Author>
+         <Author>Jon Orwant</Author>
+      </Authors>
+      <ReleaseDate>01 July, 2000</ReleaseDate>
+      <Manufacturer>O'Reilly &amp; Associates</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/0596000278.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/0596000278.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/0596000278.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$49.95</ListPrice>
+      <OurPrice>$34.96</OurPrice>
+      <UsedPrice>$33.84</UsedPrice>
+      <CollectiblePrice>$23.95</CollectiblePrice>
+      <ThirdPartyNewPrice>$30.00</ThirdPartyNewPrice>
+      <SalesRank>1,424</SalesRank>
+      <Lists>
+         <ListId>IEF1DNVKZO8B</ListId>
+         <ListId>HB1RWLRSGVKC</ListId>
+         <ListId>394U0M62XG64T</ListId>
+      </Lists>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Computer Bks - Languages / Programming</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computer Books: Languages</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computer Programming Languages</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computers</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Perl (Computer language)</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Perl (Computer program languag</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Perl (Computer program language)</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Programming - General</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Programming Languages - CGI, Javascript, Perl, VBScript</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Programming Languages - Java</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Unix (Operating System)</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>High level programming languages</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Internet languages</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Paperback</Media>
+      <NumMedia>1</NumMedia>
+      <Isbn>0596000278</Isbn>
+      <Availability>Usually ships within 24 hours</Availability>
+      <Upc>636920000273</Upc>
+      <ProductDescription>Larry Wall wrote Perl and he wrote &lt;I>Programming Perl&lt;/I>. Better yet,  he writes amusingly and well--all of which comes across in this latest edition  of the definitive guide to the language.&lt;p>  Like Topsy, Perl just grew, and as a result the need for a third edition came  about. It's now over 1,000 pages, which it needs to be, as it performs several  different duties. First, it's an introduction to the Perl language for those who  are new to programming; also, it's a guide for those who are coming from other  languages; and, finally, it's a Perl language reference. &lt;p>  Among Larry Wall's other pursuits is being a linguist, and it's perhaps for this  reason that Perl is a peculiarly flexible language with many routes to achieving  the same ends, as the authors ably demonstrate. It's also extensible in several  ways, designed to work with many other languages. Also, as it's largely  interpreted, programs written in Perl tend to run unmodified on a variety of  platforms--although platform-specific Perl modules and programming practices are  also discussed.&lt;p>  A major strength of &lt;I>Programming Perl&lt;/I> is the way subject areas are  approached from several directions. This constant shift of viewpoint eliminates  blind spots in the reader's understanding and provides a pleasing echo of the  way Perl itself can take many routes from here to there. &lt;p>  Because the Perl community is both knowledgeable and active, the language covers  much more ground here than in the previous edition. Even if you have both  previous editions, you'll want this latest version--if only for the new jokes.  &lt;I>--Steve Patient, amazon.co.uk&lt;/I></ProductDescription>
+      <Reviews>
+         <AvgCustomerRating>4.13</AvgCustomerRating>
+         <TotalCustomerReviews>214</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>Who said ....</Summary>
+            <Comment>The book is definetely written for those who at least have some (or maybe a little more than just "some") programming background, and willing to learn Perl from the author of the language.&lt;P>I read the first edition of the book, which was about 200 pages, or something in that range, which filled my mind with nothing but questions. Current edition, however, could answer to all of those questions (well, almost). Of course, to make it answer them I had to re-read the book four times. But none of the books I currently own (and I own quite a few) could've taken me to the innards of the language so deep no matter how many times I had read them. So the book is of value. &lt;P>The Camel book, especially, does a great job on Regular Expressions and pattern matching. If you want to learn RegEx of perl in very details, you definitely need listen to the author of Perl. "Mastering Regular Expressions" by Jeffrey Friedl is also a good choise, but doesn't include the latest updates.&lt;P>Formats aren't covered very well though. So you might consider "The Lama book" for that ("Learning Perl"). Still, none of the books can tell you about the innards of the Perl in so much detail overall than "Programming Perl".&lt;P>OOP is also toched upon in the book. Since purpose of the author is not to preach you OO lingo (but plain Perl), you'll treat that part just as an intorduction to OOP and consider "Object Oriented perl" by Damian Convey as the next text book. &lt;P>I found chpater 14, "Tied variables" very helpfull though. It might remind you of DBM/Berkley DB, through the syntax &lt;P>tie my %db, 'AnyDBM_File', 'my_file', O_CREAT|O_RDWR, 0664;&lt;P>but unfortunately it's not about DBM at all. It is about how the "tie" function works, and teaches you how to create your own classes for implementing with "tie". After that chapter, I even had to update some of my classes and saved lots of time for their updates. &lt;P>"Compiling", chapter 18 ,is a must read chapter for those who "live &amp; breath" with Perl (like me, may be ?).&lt;P>I don't want you to buy the book unless you have a good understanding of Programming or/and have knowledge of some programming languages. Otherwise, it won't help at all. &lt;P>If your purpose is just to get started with Web applications, go for "CGI progamming 101" by Jacqueline Hamilton. It is a good start. But if you want to go even deeper, "Learning Perl" and "Perl Coookbook" is the next choise. Keep the "The Camel" book as the next (but definitely, not the last).</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>4</Rating>
+            <Summary>Its the reference, but don't use it for learning</Summary>
+            <Comment>Unless you happen to have a degree in Unix and programming (I haven't anyway), don't use this book to learn Perl beyond Randal's Llama book (Learning Perl, excellent!). Programming Perl is a complete reference of the language but is was not made for teaching you Perl. Advanced Perl like references (actually everything after chapter 4) is quite diffucult to understand in the way it was written. Yes, I read the Llama book first but this doesn't mean you will understand the Camel. I would recommend:&lt;P>more examples (and their outputs)&lt;BR> less focus on cool snippets (provide every day code)&lt;BR> less C and Unix (Perl is mutli platform, why refer to a Unix man page instead of explaining a function?)&lt;BR> try to find simple words to explain things.&lt;P>Not everyone is an advanced programmer but everyone should use Perl. Its a wonderful language.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>4</Rating>
+            <Summary>Good introduction</Summary>
+            <Comment>This isn't the book for a first-time programmer. Outside of that, it's a great reference. Maybe the more advanced language features need more clarification, but it's plenty to get you going on your first few Perl programs.&lt;P>Perl is a pleasant oddity among programming langauges. It has lots of features that make it great as a "glue" language, for holding other programs together and for doing those irksome little translations between incompatible formats. Those are the things that shell scripts used to do: setting up files, command lines, and environment variables, checking results, preparing reports. Perl does all that, better, and gives you the full power of a programming language on top of it all. That means the transformations aren't at the mercy of available filters, and don't count on the dozen different syntaxes of the dozen different filter programs. It's a great language for all those little one-off tasks that crop up, especially in system and web admin.&lt;P>That's my problem with Perl, though - the free-wheeling, never-look-back, whatever-works spirit of the people who use Perl. I know there are disciplined, competent software engineers who develop and use Perl, and I don't mean to disparage them at all. Still, the gonzo style that's so common and the revival tent spirit of books like this put me off a bit.&lt;P>The language is very useful, and make lots of hard jobs easy. This book, despite its true-believer style, gives a thorough introduction to the language and its core APIs.</Comment>
+         </CustomerReview>
+      </Reviews>
+   </Details>
+</ProductInfo>
+</ProductLine>
+</BlendedSearch>

Added: packages/libnet-amazon-perl/branches/upstream/current/t/canned/blendedm.xml
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/t/canned/blendedm.xml	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/t/canned/blendedm.xml	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,1741 @@
+<?xml version="1.0" encoding="UTF-8"?><BlendedSearch xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xml.amazon.com/schemas3/dev-heavy.xsd">
+
+<Request><Args><Arg value="libwww-perl/5.76" name="UserAgent"></Arg><Arg value="Perl" name="BlendedSearch"></Arg><Arg value="1EY7JMTH3HMTTD6K2GMA" name="RequestID"></Arg><Arg value="us" name="locale"></Arg><Arg value="1" name="page"></Arg><Arg value="AMAZON_TOKEN" name="dev-t"></Arg><Arg value="webservices-20" name="t"></Arg><Arg value="xml" name="f"></Arg><Arg value="books" name="mode"></Arg><Arg value="heavy" name="type"></Arg><Arg value="+salesrank" name="sort"></Arg></Args></Request><ProductLine>
+   <Mode>books</Mode>
+   <RelevanceRank>1</RelevanceRank>
+<ProductInfo>
+   <TotalResults>708</TotalResults>
+   <TotalPages>71</TotalPages>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/0596000480/webservices-20?dev-t=AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>0596000480</Asin>
+      <ProductName>JavaScript: The Definitive Guide</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>David Flanagan</Author>
+      </Authors>
+      <ReleaseDate>15 December, 2001</ReleaseDate>
+      <Manufacturer>O'Reilly &amp; Associates</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/0596000480.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/0596000480.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/0596000480.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$44.95</ListPrice>
+      <OurPrice>$31.46</OurPrice>
+      <UsedPrice>$26.99</UsedPrice>
+      <CollectiblePrice>$19.95</CollectiblePrice>
+      <ThirdPartyNewPrice>$28.98</ThirdPartyNewPrice>
+      <SalesRank>1,607</SalesRank>
+      <Lists>
+         <ListId>IEF1DNVKZO8B</ListId>
+         <ListId>1446GTNVA7HF2</ListId>
+         <ListId>1R36BE3AUD988</ListId>
+      </Lists>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Computer Bks - Languages / Programming</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computer Books: Languages</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computer Networks</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computer Programming Languages</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computers</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>JavaScript (Computer program language)</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Object-oriented programming (Computer science)</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Programming - General</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Programming - Object Oriented Programming</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Programming Languages - CGI, Javascript, Perl, VBScript</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Programming Languages - Java</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Web servers</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Java &amp; variants</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Paperback</Media>
+      <NumMedia>1</NumMedia>
+      <Isbn>0596000480</Isbn>
+      <Availability>Usually ships within 24 hours</Availability>
+      <ProductDescription>Since the earliest days of Internet scripting, Web developers have considered &lt;I>JavaScript: The Definitive Guide&lt;/I> an essential resource. David Flanagan's approach, which combines tutorials and examples with easy-to-use syntax guides and object references, suits the typical programmer's requirements nicely. The brand-new fourth edition of Flanagan's "Rhino Book" includes coverage of JavaScript 1.5, JScript 5.5, ECMAScript 3, and the Document Object Model (DOM) Level 2 standard from the World Wide Web Consortium (W3C). Interestingly, the author has shifted away from specifying--as he did in earlier editions--what browsers support each bit of the language. Rather than say Netscape 3.0 supports the Image object while Internet Explorer 3.0 does not, he specifies that JavaScript 1.1 and JScript 3.0 support Image. More usefully, he specifies the contents of independent standards like ECMAScript, which encourages scripters to write applications for these standards and browser vendors to support them. As Flanagan says, JavaScript and its related subjects are very complex in their pure forms. It's impossible to keep track of the differences among half a dozen vendors' generally similar implementations. Nonetheless, a lot of examples make reference to specific browsers' capabilities.&lt;p>  Though he does not cover server-side APIs, Flanagan has chosen to separate coverage of core JavaScript (all the keywords, general syntax, and utility objects like Array) from coverage of client-side JavaScript (which includes objects, like History and Event, that have to do with Web browsers and users' interactions with them. This approach makes this book useful to people using JavaScript for applications other than Web pages. By the way, the other classic JavaScript text--Danny Goodman's &lt;I>JavaScript Bible&lt;/I>--isn't as current as this book, but it's still a fantastic (and perhaps somewhat more novice-friendly) guide to the JavaScript language and its capabilities. &lt;I>--David Wall&lt;/I>&lt;p>  &lt;B>Topics covered:&lt;/B> The JavaScript language (version 1.0 through version 1.5) and its relatives, JScript and ECMAScript, as well as the W3C DOM standards they're often used to manipulate. Tutorial sections show how to program in JavaScript, while reference sections summarize syntax and options while providing copious code examples.</ProductDescription>
+      <Reviews>
+         <AvgCustomerRating>4.31</AvgCustomerRating>
+         <TotalCustomerReviews>191</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>Definitive is the word I would use.</Summary>
+            <Comment>I have tried several books on Javascritping and while they all seem to have the same format of learning, this book draws from a different line of thought, make it simple and you can learn. This book may just be the definitive guide to learning Javascritping.&lt;P> &lt;P>Starting off this 750 plus page book is the explanation how JavaScript works from the client side and then from the server side of the things. This understanding is crucial to making sure your code is set up properly and that is works correctly the first time.&lt;P> &lt;P>Other topics covered in the book include data types, values, variables, expressions, operators, functions, objects and arrays. All of these topics are detailed yet simplified so even I could understand the nature of the text.&lt;P> &lt;P>Moving on you'll also cover how to setup windows, frames, DOM, events, forms, DHTML, cookies and security. All this is coupled with actual code screen shots to show you what the final outcome should look like.&lt;P> &lt;P>The author's ability to break down each topic and show you what you need to know in order to write the best possible code is the basis of this book. Overall this book is one to have and use on a constant basis.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>Best reference on JavaScript I have ever seen</Summary>
+            <Comment>I have read many books on JavaScript before but this is by far the most comprehansive guide to the scripting language. This book is not for beginners. &lt;BR>I use it as a reference guide. If you know the object's name or the method's name on either client side or server side, you can just look it up in this book's index section and it will reference you to a particular page with detailed explonations and more often then not with examples. &lt;BR>Absolutely love this book</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>Must have for learning and reference</Summary>
+            <Comment>As a long time C++ programmer, I found this book to be neither too hard or too easy. Readers with no programming experience at all might have a harder time with the text, but if you have any kind of programming background, the text will serve you well. As a reference, the text is second to none. Even the DOM reference is one of the best out there.</Comment>
+         </CustomerReview>
+      </Reviews>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/0596001320/webservices-20?dev-t=AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>0596001320</Asin>
+      <ProductName>Learning Perl, Third Edition</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>Randal L. Schwartz</Author>
+         <Author>Tom Phoenix</Author>
+      </Authors>
+      <ReleaseDate>15 July, 2001</ReleaseDate>
+      <Manufacturer>O'Reilly &amp; Associates</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/0596001320.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/0596001320.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/0596001320.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$34.95</ListPrice>
+      <OurPrice>$23.77</OurPrice>
+      <UsedPrice>$20.50</UsedPrice>
+      <CollectiblePrice>$17.95</CollectiblePrice>
+      <ThirdPartyNewPrice>$22.94</ThirdPartyNewPrice>
+      <SalesRank>1,032</SalesRank>
+      <Lists>
+         <ListId>1OQV9AGCQG0ED</ListId>
+         <ListId>1T2AN3P86O3Z6</ListId>
+         <ListId>343HS65N1SO1Z</ListId>
+      </Lists>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Computer Bks - Languages / Programming</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computer Books: General</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computers</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Perl (Computer language)</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Perl (Computer program languag</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Perl (Computer program language)</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Programming Languages - CGI, Javascript, Perl, VBScript</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Internet languages</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Programming languages</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Paperback</Media>
+      <NumMedia>1</NumMedia>
+      <Isbn>0596001320</Isbn>
+      <Availability>Usually ships within 24 hours</Availability>
+      <Upc>636920001324</Upc>
+      <ProductDescription>In this smooth, carefully paced course, a leading Perl trainer  teaches you to program in the language that threatens to make C, sed, awk, and the Unix shell obsolete for many tasks.  This book is the "official" guide for both formal (classroom) and informal learning.  It is fully  accessible to the novice programmer.</ProductDescription>
+      <Reviews>
+         <AvgCustomerRating>4.21</AvgCustomerRating>
+         <TotalCustomerReviews>238</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>3</Rating>
+            <Summary>Not really for absolute beginners</Summary>
+            <Comment>This book calls itself "Learning Perl," apparently because it is geared towards beginners. However, upon reading more and more of this book, it becomes increasingly clear that this book is not at all a learning tool, as it is a good reference for those who already learned the basics of Perl. The first chapter should be skipped over entirely if you're a beginner, because it will do nothing more than confuse you and turn you off to Perl. The subsequent chapters covers all relevant topics, but they skimp on providing descriptive key examples which would help you to better understand the concept. This book makes too many references to C and other languages, implying that you already know previous programming languages. The chapter on regular expressions is shamefully cursory and lacking in examples which can be adequately picked up by the Perl novice. The language of the text is not for the beginner user, as it throws around too many Perl-centric terms and definitions. For an intermediate, this may be sufficient, but it will not do for the beginner. I recommend Perl for Dummies as the ultimate beginner's tool. That book doesn't cover as many topics as this book, but it certainly explains conceps in a much more novice-friendly language than Learning Perl. Learning Perl makes the mistake of not keeping it simple. This is a very important teaching idea, when your expected audience are complete novices who need to have everything explained to them in basic layman's terms. This book is more of a sophisticated primer for already skilled programmers.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>Top of the line</Summary>
+            <Comment>This is as good as it gets.&lt;P>The writing style is fun throughout, the chosen examples interesting, organization very well thought out, presentation clear. You pick it up and you will keep reading.&lt;P>The first chapter gives an overview of what the language can do via an example ("guess the secret word") which is developed more and more using more and more features of the language.&lt;P>In your average programming book the examples are tortured and boring so that it's hard to keep reading. Not so here.&lt;BR>Everything is well motivated and the writing style is amusing throughout.&lt;P>If you are coming from a system language background you will be hooked immediately. The ease with which many tasks are dealt with in Perl is astonishing.&lt;P>The amusing style and excellent presentation is kept up in all chapters of the book. The book will give you an overview of the language and basic skills. &lt;P>None of the programming books I have seen comes close to explaining basic constructs as clearly as this one. If this is your first book of first language you are very lucky.&lt;P>You will feel the need for an in depth presentation. This is not a criticism of the book. What's presented here is already very powerful.&lt;BR>Even after 2 days I was able to write a script doing some useful work I could not otherwise have accomplished. &lt;P>Perl is too rich to give an exhaustive treatment in 260 pages. You'll need Larry Wall's book also and this is clearly stated in the book.&lt;P>This book makes learning Perl fun and will create a lot of fans for the language. It's the perfect entry and will keep you strongly motivated to delve deeper.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>A great introduction</Summary>
+            <Comment>This book is aimed at Perl novices and sys admins who need to get up to speed quickly. As with most O'Reilly books I found the authors know thier stuff and the book was well edited. &lt;P>The book contains enough info to allow you to script most sys admin tasks, and has the benefit of being short and therefore easy to carry, but once you get a taste of Perl's power you will no doubt want to get the "camel" (programming perl), which is more comprehensive.</Comment>
+         </CustomerReview>
+      </Reviews>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/0596000278/webservices-20?dev-t=AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>0596000278</Asin>
+      <ProductName>Programming Perl (3rd Edition)</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>Larry Wall</Author>
+         <Author>Tom Christiansen</Author>
+         <Author>Jon Orwant</Author>
+      </Authors>
+      <ReleaseDate>01 July, 2000</ReleaseDate>
+      <Manufacturer>O'Reilly &amp; Associates</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/0596000278.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/0596000278.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/0596000278.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$49.95</ListPrice>
+      <OurPrice>$34.96</OurPrice>
+      <UsedPrice>$33.84</UsedPrice>
+      <CollectiblePrice>$23.95</CollectiblePrice>
+      <ThirdPartyNewPrice>$30.00</ThirdPartyNewPrice>
+      <SalesRank>1,424</SalesRank>
+      <Lists>
+         <ListId>IEF1DNVKZO8B</ListId>
+         <ListId>HB1RWLRSGVKC</ListId>
+         <ListId>394U0M62XG64T</ListId>
+      </Lists>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Computer Bks - Languages / Programming</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computer Books: Languages</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computer Programming Languages</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computers</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Perl (Computer language)</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Perl (Computer program languag</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Perl (Computer program language)</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Programming - General</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Programming Languages - CGI, Javascript, Perl, VBScript</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Programming Languages - Java</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Unix (Operating System)</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>High level programming languages</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Internet languages</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Paperback</Media>
+      <NumMedia>1</NumMedia>
+      <Isbn>0596000278</Isbn>
+      <Availability>Usually ships within 24 hours</Availability>
+      <Upc>636920000273</Upc>
+      <ProductDescription>Larry Wall wrote Perl and he wrote &lt;I>Programming Perl&lt;/I>. Better yet,  he writes amusingly and well--all of which comes across in this latest edition  of the definitive guide to the language.&lt;p>  Like Topsy, Perl just grew, and as a result the need for a third edition came  about. It's now over 1,000 pages, which it needs to be, as it performs several  different duties. First, it's an introduction to the Perl language for those who  are new to programming; also, it's a guide for those who are coming from other  languages; and, finally, it's a Perl language reference. &lt;p>  Among Larry Wall's other pursuits is being a linguist, and it's perhaps for this  reason that Perl is a peculiarly flexible language with many routes to achieving  the same ends, as the authors ably demonstrate. It's also extensible in several  ways, designed to work with many other languages. Also, as it's largely  interpreted, programs written in Perl tend to run unmodified on a variety of  platforms--although platform-specific Perl modules and programming practices are  also discussed.&lt;p>  A major strength of &lt;I>Programming Perl&lt;/I> is the way subject areas are  approached from several directions. This constant shift of viewpoint eliminates  blind spots in the reader's understanding and provides a pleasing echo of the  way Perl itself can take many routes from here to there. &lt;p>  Because the Perl community is both knowledgeable and active, the language covers  much more ground here than in the previous edition. Even if you have both  previous editions, you'll want this latest version--if only for the new jokes.  &lt;I>--Steve Patient, amazon.co.uk&lt;/I></ProductDescription>
+      <Reviews>
+         <AvgCustomerRating>4.13</AvgCustomerRating>
+         <TotalCustomerReviews>214</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>Who said ....</Summary>
+            <Comment>The book is definetely written for those who at least have some (or maybe a little more than just "some") programming background, and willing to learn Perl from the author of the language.&lt;P>I read the first edition of the book, which was about 200 pages, or something in that range, which filled my mind with nothing but questions. Current edition, however, could answer to all of those questions (well, almost). Of course, to make it answer them I had to re-read the book four times. But none of the books I currently own (and I own quite a few) could've taken me to the innards of the language so deep no matter how many times I had read them. So the book is of value. &lt;P>The Camel book, especially, does a great job on Regular Expressions and pattern matching. If you want to learn RegEx of perl in very details, you definitely need listen to the author of Perl. "Mastering Regular Expressions" by Jeffrey Friedl is also a good choise, but doesn't include the latest updates.&lt;P>Formats aren't covered very well though. So you might consider "The Lama book" for that ("Learning Perl"). Still, none of the books can tell you about the innards of the Perl in so much detail overall than "Programming Perl".&lt;P>OOP is also toched upon in the book. Since purpose of the author is not to preach you OO lingo (but plain Perl), you'll treat that part just as an intorduction to OOP and consider "Object Oriented perl" by Damian Convey as the next text book. &lt;P>I found chpater 14, "Tied variables" very helpfull though. It might remind you of DBM/Berkley DB, through the syntax &lt;P>tie my %db, 'AnyDBM_File', 'my_file', O_CREAT|O_RDWR, 0664;&lt;P>but unfortunately it's not about DBM at all. It is about how the "tie" function works, and teaches you how to create your own classes for implementing with "tie". After that chapter, I even had to update some of my classes and saved lots of time for their updates. &lt;P>"Compiling", chapter 18 ,is a must read chapter for those who "live &amp; breath" with Perl (like me, may be ?).&lt;P>I don't want you to buy the book unless you have a good understanding of Programming or/and have knowledge of some programming languages. Otherwise, it won't help at all. &lt;P>If your purpose is just to get started with Web applications, go for "CGI progamming 101" by Jacqueline Hamilton. It is a good start. But if you want to go even deeper, "Learning Perl" and "Perl Coookbook" is the next choise. Keep the "The Camel" book as the next (but definitely, not the last).</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>4</Rating>
+            <Summary>Its the reference, but don't use it for learning</Summary>
+            <Comment>Unless you happen to have a degree in Unix and programming (I haven't anyway), don't use this book to learn Perl beyond Randal's Llama book (Learning Perl, excellent!). Programming Perl is a complete reference of the language but is was not made for teaching you Perl. Advanced Perl like references (actually everything after chapter 4) is quite diffucult to understand in the way it was written. Yes, I read the Llama book first but this doesn't mean you will understand the Camel. I would recommend:&lt;P>more examples (and their outputs)&lt;BR> less focus on cool snippets (provide every day code)&lt;BR> less C and Unix (Perl is mutli platform, why refer to a Unix man page instead of explaining a function?)&lt;BR> try to find simple words to explain things.&lt;P>Not everyone is an advanced programmer but everyone should use Perl. Its a wonderful language.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>4</Rating>
+            <Summary>Good introduction</Summary>
+            <Comment>This isn't the book for a first-time programmer. Outside of that, it's a great reference. Maybe the more advanced language features need more clarification, but it's plenty to get you going on your first few Perl programs.&lt;P>Perl is a pleasant oddity among programming langauges. It has lots of features that make it great as a "glue" language, for holding other programs together and for doing those irksome little translations between incompatible formats. Those are the things that shell scripts used to do: setting up files, command lines, and environment variables, checking results, preparing reports. Perl does all that, better, and gives you the full power of a programming language on top of it all. That means the transformations aren't at the mercy of available filters, and don't count on the dozen different syntaxes of the dozen different filter programs. It's a great language for all those little one-off tasks that crop up, especially in system and web admin.&lt;P>That's my problem with Perl, though - the free-wheeling, never-look-back, whatever-works spirit of the people who use Perl. I know there are disciplined, competent software engineers who develop and use Perl, and I don't mean to disparage them at all. Still, the gonzo style that's so common and the revival tent spirit of books like this put me off a bit.&lt;P>The language is very useful, and make lots of hard jobs easy. This book, despite its true-believer style, gives a thorough introduction to the language and its core APIs.</Comment>
+         </CustomerReview>
+      </Reviews>
+   </Details>
+</ProductInfo>
+</ProductLine>
+<ProductLine>
+   <Mode>sporting</Mode>
+   <RelevanceRank>9</RelevanceRank>
+<ProductInfo>
+   <TotalResults>628</TotalResults>
+   <TotalPages>63</TotalPages>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B0000ZOP1U/webservices-20?dev-t=AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>B0000ZOP1U</Asin>
+      <ProductName>Diadora Men's Leggera F RTX 12 ( sz. 09.0, White Pearl/Gold )</ProductName>
+      <Catalog>Apparel</Catalog>
+      <Manufacturer>Diadora</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B0000ZOP1U.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B0000ZOP1U.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B0000ZOP1U.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <OurPrice>$139.99</OurPrice>
+      <Availability>This item is not stocked or has been discontinued.</Availability>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B000074E36/webservices-20?dev-t=AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>B000074E36</Asin>
+      <ProductName>Diadora Men's Leggera F RTX 12 ( sz. 07.5, White Pearl/Gold )</ProductName>
+      <Catalog>Apparel</Catalog>
+      <Manufacturer>Diadora</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B000074E36.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B000074E36.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B000074E36.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <OurPrice>$139.99</OurPrice>
+      <Availability>This item is not stocked or has been discontinued.</Availability>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B00020U0OO/webservices-20?dev-t=AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>B00020U0OO</Asin>
+      <ProductName>Fox 40 Pearl with Breakaway Lanyard</ProductName>
+      <Catalog>Sports</Catalog>
+      <Manufacturer>Fox 40</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B00020U0OO.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B00020U0OO.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B00020U0OO.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$4.99</ListPrice>
+      <Features>
+         <Feature>Two chamber pealess whistle</Feature>
+         <Feature>Breakaway neck lanyard</Feature>
+         <Feature>No moveable parts to jam, break or freeze</Feature>
+         <Feature>First choice of sports organizations worldwide - including the NFL, NCAA, NBA, CFL FIBA and FIFA</Feature>
+         <Feature>100% constructed of high-impact ABS plastic-So they're 100% impervious to moisture</Feature>
+      </Features>
+      <Availability>This item is not stocked or has been discontinued.</Availability>
+   </Details>
+</ProductInfo>
+</ProductLine>
+<ProductLine>
+   <Mode>gourmet</Mode>
+   <RelevanceRank>10</RelevanceRank>
+<ProductInfo>
+   <TotalResults>202</TotalResults>
+   <TotalPages>21</TotalPages>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B000136WOY/webservices-20?dev-t=AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>B000136WOY</Asin>
+      <ProductName>21 boxes assorted Hawaiian Macadamia Nut Pearls collection</ProductName>
+      <Catalog>Gourmet</Catalog>
+      <Manufacturer>Elvira Chocolat of Hawaii</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B000136WOY.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B000136WOY.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B000136WOY.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <OurPrice>$39.95</OurPrice>
+      <Features>
+         <Feature>Selected wholes and halves dry roasted Hawaiian Macadamia Nut</Feature>
+         <Feature>100% Hawaiian made</Feature>
+         <Feature>Island Treasure</Feature>
+         <Feature>Exclusively hand made</Feature>
+         <Feature>21 boxes total 42 oz</Feature>
+      </Features>
+      <Availability>We will e-mail you when this item becomes available</Availability>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B0001N7N60/webservices-20?dev-t=AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>B0001N7N60</Asin>
+      <ProductName>Almond Bubble Tea Powder</ProductName>
+      <Catalog>Gourmet</Catalog>
+      <Manufacturer>Bubble Tea Supply</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B0001N7N60.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B0001N7N60.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B0001N7N60.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$26.93</ListPrice>
+      <OurPrice>$17.95</OurPrice>
+      <Features>
+         <Feature>National Best Taste Award Winner 2002-2004</Feature>
+         <Feature>All U.S. orders shipped DHL 3 Day</Feature>
+         <Feature>Easy to Prepare</Feature>
+         <Feature>Recipes Included</Feature>
+         <Feature>Save by Making Bubble Tea at Home</Feature>
+      </Features>
+      <Availability>This item is not stocked or has been discontinued.</Availability>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B00013WX7O/webservices-20?dev-t=AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>B00013WX7O</Asin>
+      <ProductName>Pearl River Bridge Yang Jiang Preserved Black Beans with Ginger</ProductName>
+      <Catalog>Gourmet</Catalog>
+      <Manufacturer>Pearl River Bridge</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B00013WX7O.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B00013WX7O.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B00013WX7O.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <OurPrice>$2.79</OurPrice>
+      <Features>
+         <Feature>Net Wt. 17.5 oz.</Feature>
+         <Feature>Product of China</Feature>
+      </Features>
+      <Availability>This item is not stocked or has been discontinued.</Availability>
+   </Details>
+</ProductInfo>
+</ProductLine>
+<ProductLine>
+   <Mode>electronics</Mode>
+   <RelevanceRank>5</RelevanceRank>
+<ProductInfo>
+   <TotalResults>188</TotalResults>
+   <TotalPages>19</TotalPages>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B0000YB7RQ/webservices-20?dev-t=AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>B0000YB7RQ</Asin>
+      <ProductName>Antec Notebook Cooler Pearl</ProductName>
+      <Catalog>Electronics</Catalog>
+      <Manufacturer>Antec</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B0000YB7RQ.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B0000YB7RQ.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B0000YB7RQ.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <OurPrice>$32.99</OurPrice>
+      <UsedPrice>$35.32</UsedPrice>
+      <ThirdPartyNewPrice>$30.73</ThirdPartyNewPrice>
+      <SalesRank>1,661</SalesRank>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Accessories (Accessory)</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Electronics</Media>
+      <NumMedia>1</NumMedia>
+      <Features>
+         <Feature>Draw power from any USB port without losing use of the USB port.</Feature>
+         <Feature>No batteries or power adapter needed.</Feature>
+         <Feature>2 Double ball-bearing fans for reliability.</Feature>
+         <Feature>Quieter than a whisper, only 25.9 dB(A)</Feature>
+         <Feature>AQ3 Antec Quality three-year warranty.</Feature>
+      </Features>
+      <Availability>Usually ships within 24 hours</Availability>
+      <Upc>761345750059</Upc>
+      <Mpn>NOTBKCOOLRPEARL</Mpn>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B00006IS63/webservices-20?dev-t=AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>B00006IS63</Asin>
+      <ProductName>TIVOLI AUDIO PAL AM/FM Radio - Pearl White</ProductName>
+      <Catalog>Electronics</Catalog>
+      <Manufacturer>Tivoli Audio</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B00006IS63.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B00006IS63.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B00006IS63.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <OurPrice>$129.88</OurPrice>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Portable AMFM Radio (Personal AM-FM)</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Electronics</Media>
+      <NumMedia>1</NumMedia>
+      <Features>
+         <Feature>AM &amp; FM</Feature>
+         <Feature>Auxiliary Input for CD player, MP3 players, &amp; more</Feature>
+         <Feature>Headphone Jack</Feature>
+         <Feature>Adjustable Telescoping FM Antenna</Feature>
+         <Feature>Built-in AM Antenna</Feature>
+      </Features>
+      <Availability>This item is not stocked or has been discontinued.</Availability>
+      <Upc>831623002078</Upc>
+      <Accessories>
+         <Accessory>B00001W0DH</Accessory>
+         <Accessory>B00004Z0BO</Accessory>
+         <Accessory>B000066CCU</Accessory>
+         <Accessory>B00006B85B</Accessory>
+         <Accessory>B00008RGR8</Accessory>
+      </Accessories>
+      <Reviews>
+         <AvgCustomerRating>5</AvgCustomerRating>
+         <TotalCustomerReviews>5</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>Unbeatable.</Summary>
+            <Comment>This little radio is simply amazing. I got it for motorcycle touring, where space is at a premium, so I could have tunes in hotels and campsites. The radio is tiny, the sound quality is just great. It's a little odd getting used to mono, but any further away than a few feet, the difference is not noticable. Combined with my iPod, this is pretty much the perfect sound system for travelling. It's pricey, but it's worth every penny.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>Superb for distributing XM Satellite Radio in my house</Summary>
+            <Comment>First, I agree with the prior reviewers that the sound quality is almost unbelievably good for a unit this size. &lt;P>I now own 27 (yes, 27!) of these, and use them to distribute XM throughout my house as follows: Delphi XM receiver to Sangean FM transmitter (from ccrane-dot-com) to Tivoli PAL. Prior to hearing the PAL, I wouldn't have thought a small monaural unit would provide acceptable sound in a small room; the PAL does.&lt;P>The FM tuner had excellent sensitivity (ability to pick up weak stations), yet many radios do. What sets the PAL apart is its exceptional selectivity (ability to receive a realtively weak station that is wedged between two nearby, and stronger, stations).&lt;P>And, for what its worth, when I dropped one into a swimming pool, it floated.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>the best gift for anyone at any age!</Summary>
+            <Comment>You could say between my fiance and myself we've started a collection of the PAL radios, we own three so far, a black, blue and yellow and I'm trying to decide between the Red or Green for my next purchase. These radios are fantastic and reliable and are great for gifts! &lt;BR>The size of this radio was what appealed to me but only after I had it at home and realized all the places it fit. the radio has such a small footprint that it fit in the corner of my bathtub, and sits on my windowsill while I wash dishes. My fiance has one that he leaves plugged in the wall which always keeps his battery fully recharged at all times. The reception has always been reliable on both AM and FM and I can always count on my PAL for the Red Sox games while in the yard with the dog. &lt;BR>I've given close to ten of these radios away within the last two years and everyone loves them! You get your choice between eight different colors which appeals to even the youngest recipient who was nine and was ecstatic about owning her very own RED "grown up radio" she took it outside with her often and her favorite station she listened to was Radio Disney. For convenience this radio can be ordered directly from www.tivoliaudio.com and will ship directly to the gift recipient if you choose. I can't say enough about these radios only that if you don't own one you're missing out!&lt;BR>Kudos Tivoli Audio!</Comment>
+         </CustomerReview>
+      </Reviews>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B00002NDRQ/webservices-20?dev-t=AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>B00002NDRQ</Asin>
+      <ProductName>DYMO 91331 Pearl White Plastic Tape for LetraTag (1/2"x13')</ProductName>
+      <Catalog>Electronics</Catalog>
+      <Manufacturer>DYMO</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B00002NDRQ.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B00002NDRQ.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B00002NDRQ.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$9.99</ListPrice>
+      <OurPrice>$6.99</OurPrice>
+      <UsedPrice>$7.67</UsedPrice>
+      <ThirdPartyNewPrice>$7.67</ThirdPartyNewPrice>
+      <SalesRank>1,781</SalesRank>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Labeling Systems, System, Kits, Kit, Machines, Machine</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Devices, Device</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Label Writers, Writer, Makers, Maker</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Labelers, Labeler</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Label, Labels</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Tape Label (Electronic Labeling System, Maker, Device, Making, Machine)</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Electronics</Media>
+      <NumMedia>1</NumMedia>
+      <Features>
+         <Feature>For Dymo LetraTag label printers</Feature>
+         <Feature>Pearl white plastic</Feature>
+         <Feature>0.5 inch by 13 feet</Feature>
+         <Feature>Attractive, long-lasting labels</Feature>
+         <Feature>Genuine Dymo quality accessory</Feature>
+      </Features>
+      <Availability>Usually ships within 1 to 2 days</Availability>
+      <Upc>071701913319</Upc>
+      <Mpn>91331</Mpn>
+      <Accessories>
+         <Accessory>B00002NDRX</Accessory>
+         <Accessory>B00002QUKU</Accessory>
+         <Accessory>B00004Z5DU</Accessory>
+         <Accessory>B00004Z5L0</Accessory>
+         <Accessory>B00004Z5QR</Accessory>
+      </Accessories>
+      <ProductDescription>Developed specifically for its popular LetraTag label makers, DYMO's white plastic tape cartridge offers 13 feet of .5-inch printable pearl white plastic tape. For attractive labels that stand the test of time, use a genuine DYMO quality accessory.</ProductDescription>
+      <Reviews>
+         <AvgCustomerRating>5</AvgCustomerRating>
+         <TotalCustomerReviews>2</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>Works fine</Summary>
+            <Comment>I personally don't see any problem with this product. It is easy to put in a new cartrige and to take on out. However the cartridges do seem a little expensive, but they last pretty long. I've never had one jam yet either.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>Excellent Buy!!!!!!!</Summary>
+            <Comment>I have the DYMO Letra Tag Label maker and I love it. I have one at work and one at home. Excellent purchase for being the organized person that I am.</Comment>
+         </CustomerReview>
+      </Reviews>
+   </Details>
+</ProductInfo>
+</ProductLine>
+<ProductLine>
+   <Mode>photo</Mode>
+   <RelevanceRank>8</RelevanceRank>
+<ProductInfo>
+   <TotalResults>112</TotalResults>
+   <TotalPages>12</TotalPages>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B0001WENK0/webservices-20?dev-t=AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>B0001WENK0</Asin>
+      <ProductName>Ilford Galerie Smooth Pearl Inkjet Paper, 4x6" - 30 Sheets</ProductName>
+      <Catalog>Electronics</Catalog>
+      <Manufacturer>Ilford</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B0001WENK0.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B0001WENK0.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B0001WENK0.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <OurPrice>$7.99</OurPrice>
+      <ThirdPartyNewPrice>$12.77</ThirdPartyNewPrice>
+      <Features>
+         <Feature>Instant dry with a real photo look and finish.</Feature>
+         <Feature>Smooth pearl surface</Feature>
+         <Feature>Instant dry (microceramic)</Feature>
+         <Feature>Superb photographic image quality and consistency</Feature>
+         <Feature>Heavyweight look and feel of a real photograph</Feature>
+      </Features>
+      <Availability>This item is not stocked or has been discontinued.</Availability>
+      <Upc>019498125553</Upc>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B00006I5C2/webservices-20?dev-t=AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>B00006I5C2</Asin>
+      <ProductName>ILFORD Galerie Smooth Pearl Inkjet Photo Paper ? 25 Sheets</ProductName>
+      <Catalog>Electronics</Catalog>
+      <Manufacturer>Ilford</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B00006I5C2.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B00006I5C2.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B00006I5C2.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <OurPrice>$14.88</OurPrice>
+      <ThirdPartyNewPrice>$18.40</ThirdPartyNewPrice>
+      <Media>Electronics</Media>
+      <NumMedia>1</NumMedia>
+      <Features>
+         <Feature>The pearl side of the paper is the printing surface</Feature>
+         <Feature>Excellent image quality, with brilliant, eye-catching colors</Feature>
+         <Feature>Photographic weight and feel</Feature>
+         <Feature>Water / Smudge resistant</Feature>
+         <Feature>Good archival properties and fade resistance</Feature>
+      </Features>
+      <Availability>This item is not stocked or has been discontinued.</Availability>
+      <Upc>019498979217</Upc>
+      <Mpn>1979211</Mpn>
+      <Reviews>
+         <AvgCustomerRating>5</AvgCustomerRating>
+         <TotalCustomerReviews>2</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>Perfect!!</Summary>
+            <Comment>As a college student specializing in digtal photography, I know what I'm talking about. This paper is absolutely wonderful for printing REAL photo quality pictures. As long as you have a good printer, a color cartridge, and are sure to make the necessary adjustments in your print settings, you will never back to those cheaper poor-quality photo papers!!!!</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>outstanding paper</Summary>
+            <Comment>If you buy printer-branded photo paper, you should move to this. It's amazing. Much superior.More expensive, but worth it.</Comment>
+         </CustomerReview>
+      </Reviews>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B00006I5C3/webservices-20?dev-t=AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>B00006I5C3</Asin>
+      <ProductName>Ilford Galerie Smooth Pearl Inkjet Photo Paper (Model 1979239, 100 Sheets)</ProductName>
+      <Catalog>Electronics</Catalog>
+      <Manufacturer>Ilford</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B00006I5C3.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B00006I5C3.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B00006I5C3.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <OurPrice>$44.88</OurPrice>
+      <ThirdPartyNewPrice>$49.39</ThirdPartyNewPrice>
+      <Media>Electronics</Media>
+      <NumMedia>1</NumMedia>
+      <Features>
+         <Feature>Micro-ceramic RC photo paper, smooth pearl finish</Feature>
+         <Feature>280 g/m2 basis weight, 99% opacity</Feature>
+         <Feature>Instant dry, 10-year life expectancy</Feature>
+         <Feature>100 sheets per package</Feature>
+         <Feature>Designed for inkjet printers</Feature>
+      </Features>
+      <Availability>This item is not stocked or has been discontinued.</Availability>
+      <Upc>019498979231</Upc>
+      <Mpn>1979239</Mpn>
+      <ProductDescription>Designed for use with all inkjet printers, Ilford Galerie smooth pearl photo paper uses a Micro-ceramic technology and a smooth pearl finish to help you achieve professional-looking results, without a trip to the photo lab. This 280 g/m2 paper has a 99% opacity and a 14-22% gloss, resulting in a sturdy feel and a life expectancy of about 10 years. 100 sheets of paper are provided in each package.</ProductDescription>
+      <Reviews>
+         <AvgCustomerRating>5</AvgCustomerRating>
+         <TotalCustomerReviews>1</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>ILFORD Smooth Pearl</Summary>
+            <Comment>When I first started developing my own black and white prints almost 30 years ago I fell in love with Ilford pearl. More recently I switched to digital imaging and Ilford Smooth Pearl provides the same beautiful paper finish for ink jet printers that they provided for film developers. The paper has a great look and feel and is reistant to fading. It has the feel of a high quality traditional photo paper. It also works with encapsulated pigmented inks as well as dye based inks. It drys instantly and because of its luster type surface is resistant to smudge marks and finger prints. Ilford also offers a classic version of Pearl, but it is not usable with pigmented inks. I am using Ilford Smooth Pearl with my Epson Stylus 2200 with great results.</Comment>
+         </CustomerReview>
+      </Reviews>
+   </Details>
+</ProductInfo>
+</ProductLine>
+<ProductLine>
+   <Mode>classical</Mode>
+   <RelevanceRank>4</RelevanceRank>
+<ProductInfo>
+   <TotalResults>69</TotalResults>
+   <TotalPages>7</TotalPages>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B00002DE5C/webservices-20?dev-t=AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>B00002DE5C</Asin>
+      <ProductName>Per La Viola Da Gamba</ProductName>
+      <Catalog>Music</Catalog>
+      <Artists>
+         <Artist>Hille Perl</Artist>
+      </Artists>
+      <ReleaseDate>18 May, 2004</ReleaseDate>
+      <Manufacturer>Rca</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B00002DE5C.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B00002DE5C.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B00002DE5C.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$17.98</ListPrice>
+      <OurPrice>$17.98</OurPrice>
+      <UsedPrice>$15.54</UsedPrice>
+      <ThirdPartyNewPrice>$14.64</ThirdPartyNewPrice>
+      <SalesRank>387,958</SalesRank>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Chamber Music &amp; Recitals</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Classical</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Audio CD</Media>
+      <Availability>Usually ships within 24 hours</Availability>
+      <Upc>054727751523</Upc>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B000026D4Z/webservices-20?dev-t=AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>B000026D4Z</Asin>
+      <ProductName>Il Zazzerino: Madrigals &amp; Instrumental Music</ProductName>
+      <Catalog>Music</Catalog>
+      <Artists>
+         <Artist>Jacopo Peri</Artist>
+         <Artist>Ellen L. Hargis</Artist>
+         <Artist>Paul O'Dette</Artist>
+         <Artist>Andrew Lawrence-King</Artist>
+         <Artist>Hille Perl</Artist>
+      </Artists>
+      <ReleaseDate>12 October, 1999</ReleaseDate>
+      <Manufacturer>Harmonia Mundi</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B000026D4Z.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B000026D4Z.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B000026D4Z.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$17.98</ListPrice>
+      <OurPrice>$17.98</OurPrice>
+      <UsedPrice>$13.88</UsedPrice>
+      <ThirdPartyNewPrice>$13.87</ThirdPartyNewPrice>
+      <SalesRank>73,797</SalesRank>
+      <Tracks>
+         <Track>il Zazzerino: Hor che gli augelli</Track>
+         <Track>il Zazzerino: Lungi dal vostro lume</Track>
+         <Track>il Zazzerino: Ballo (instrumental suite)</Track>
+         <Track>il Zazzerino: Tra le lagrime e i sospiri</Track>
+         <Track>il Zazzerino: Uccidimi, dolore</Track>
+         <Track>il Zazzerino: Ricercar del primo tuono del Zazzerino</Track>
+         <Track>il Zazzerino: Se tu parti da me</Track>
+         <Track>il Zazzerino: Tu dormi, e 'l dolce sonno</Track>
+         <Track>il Zazzerino: Caro dolce ben mio</Track>
+         <Track>il Zazzerino: Tra le donne onde s'onora</Track>
+         <Track>il Zazzerino: Lasso, ch'i' ardo</Track>
+         <Track>il Zazzerino: Bellissima regina</Track>
+         <Track>il Zazzerino: Occhi, fonti del core, occhi piangete</Track>
+         <Track>il Zazzerino: O miei giorni</Track>
+         <Track>il Zazzerino: Torna, deh torna</Track>
+         <Track>il Zazzerino: Tutto 'l di piango</Track>
+         <Track>il Zazzerino: Al fonte, al prato</Track>
+      </Tracks>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Chamber Music &amp; Recitals</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Classical</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Audio CD</Media>
+      <NumMedia>1</NumMedia>
+      <Availability>Usually ships within 24 hours</Availability>
+      <Upc>093046723422</Upc>
+      <Reviews>
+         <AvgCustomerRating>5</AvgCustomerRating>
+         <TotalCustomerReviews>1</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>Beautiful early opera</Summary>
+            <Comment>Il Zazzerino (with works spanning 1577 to 1609) is mostly from the early music era "La Nuove Musiche" or the New Music, by Italian composer and tenor, Jacopo Peri, who wrote the first operas, Dafne (1598) and Euridice (1600). The music is luscious and warm, and Andrew Lawrence-King's harp is a beautiful counterpart to Ellen Hargis, who unfurls a sensitive but powerful expressive voice for each piece. Fans of early opera will be pleased by the recording.&lt;P>I discovered Il Zazzerino while looking for more work by Lawrence-King, after finding his work on the new recording of the first opera performed in the New World, by Spanish composer Torrejón y Velasco: La Púrpura de la rosa, which I also highly recommend. Another high quality early music opera.</Comment>
+         </CustomerReview>
+      </Reviews>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B0001K9IKC/webservices-20?dev-t=AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>B0001K9IKC</Asin>
+      <ProductName>Marais: Pour La Violle Et Le Theorbe</ProductName>
+      <Catalog>Music</Catalog>
+      <Artists>
+         <Artist>Hille Perl</Artist>
+      </Artists>
+      <ReleaseDate>04 May, 2004</ReleaseDate>
+      <Manufacturer>Rca</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B0001K9IKC.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B0001K9IKC.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B0001K9IKC.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$17.98</ListPrice>
+      <OurPrice>$17.98</OurPrice>
+      <UsedPrice>$14.62</UsedPrice>
+      <ThirdPartyNewPrice>$13.95</ThirdPartyNewPrice>
+      <SalesRank>374,335</SalesRank>
+      <Tracks>
+         <Track>Prelude Pour La Violle Et Le Theorbe</Track>
+         <Track>Folies</Track>
+         <Track>La Bagatelle</Track>
+         <Track>Prelude</Track>
+         <Track>Caprice</Track>
+         <Track>Allemande (&amp; Double)</Track>
+         <Track>Courante</Track>
+         <Track>Sarabande</Track>
+         <Track>Gigue La Chicane</Track>
+         <Track>Rondeau Loure</Track>
+         <Track>Plainte</Track>
+         <Track>Menuet Fantasque &amp; Double</Track>
+         <Track>Le Moulinet</Track>
+         <Track>Prelude</Track>
+         <Track>Allemande</Track>
+         <Track>Aire</Track>
+         <Track>Passacalle</Track>
+         <Track>Fantaisie</Track>
+         <Track>Allemande (&amp; Double)</Track>
+         <Track>Courante (&amp; Double)</Track>
+         <Track>Sarabande (&amp; Double)</Track>
+         <Track>Gigue</Track>
+         <Track>La Paysane</Track>
+         <Track>Chaconne</Track>
+         <Track>20 Couplets</Track>
+      </Tracks>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Chamber Music &amp; Recitals</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Classical</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Audio CD</Media>
+      <Availability>Usually ships within 4 to 5 days</Availability>
+      <Upc>828765879125</Upc>
+      <Reviews>
+         <AvgCustomerRating>5</AvgCustomerRating>
+         <TotalCustomerReviews>1</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>Sublime yet Sexy</Summary>
+            <Comment>The clever marketing alone sold me on this CD. While the composer and instruments are not widely known outside Baroque enthusiasts, the target audience for this recording clearly reaches beyond those with a purely academic interest. This recording is exquisite. The performers are virtuosic, and, judging from the deeply personal liner notes, missionaries for this wonderful material. The virtuosic second movement of the Suite en Re will convince even the most hardened of sceptics that this is engaging material. I make a good deal of my living from classical, medieval and new music, but take a break and rarely play anything past the 14th century (on my home stereo) just for fun. However, I have been enjoying this CD at least twice daily all week and I am buying several more for gifts.</Comment>
+         </CustomerReview>
+      </Reviews>
+   </Details>
+</ProductInfo>
+</ProductLine>
+<ProductLine>
+   <Mode>music</Mode>
+   <RelevanceRank>6</RelevanceRank>
+<ProductInfo>
+   <TotalResults>35</TotalResults>
+   <TotalPages>4</TotalPages>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B0000007A9/webservices-20?dev-t=AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>B0000007A9</Asin>
+      <ProductName>Bach: Der Streit zwischen Phoebus &amp; Pan - Cantates</ProductName>
+      <Catalog>Music</Catalog>
+      <Artists>
+         <Artist>Johann Sebastian Bach</Artist>
+         <Artist>Raphael Alpermann</Artist>
+         <Artist>Katharina Arfken</Artist>
+         <Artist>Jurt Azesberger</Artist>
+         <Artist>Christian Beuse</Artist>
+         <Artist>Jan Freiheit</Artist>
+         <Artist>Ekkehard Hering</Artist>
+         <Artist>Ernst-Burghard Hilse</Artist>
+         <Artist>Maria Cristina Kiehr</Artist>
+         <Artist>Peter Lika</Artist>
+      </Artists>
+      <ReleaseDate>21 May, 1996</ReleaseDate>
+      <Manufacturer>Harmonia Mundi</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B0000007A9.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B0000007A9.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B0000007A9.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$31.98</ListPrice>
+      <OurPrice>$31.98</OurPrice>
+      <UsedPrice>$24.99</UsedPrice>
+      <ThirdPartyNewPrice>$25.72</ThirdPartyNewPrice>
+      <SalesRank>406,005</SalesRank>
+      <Tracks>
+         <Track>Geschwinde, ihr wirbelnden Winde, BWV 201: Chor : Geschwinde, ihr wirbelnden Winde</Track>
+         <Track>Geschwinde, ihr wirbelnden Winde, BWV 201: Rezitativ : Und du bist doch so unverschämt</Track>
+         <Track>Geschwinde, ihr wirbelnden Winde, BWV 201: Aria : Patron, das macht der Wind!</Track>
+         <Track>Geschwinde, ihr wirbelnden Winde, BWV 201: Rezitativ : Was braucht ihr deine zarten Wangen</Track>
+         <Track>Geschwinde, ihr wirbelnden Winde, BWV 201: Aria : Mit Verlangen drück ich deinen zarten Wangen</Track>
+         <Track>Geschwinde, ihr wirbelnden Winde, BWV 201: Rezitativ : Pan, rücke deine Kehle nun</Track>
+         <Track>Geschwinde, ihr wirbelnden Winde, BWV 201: Aria : Zu Tanze, zu Sprunge, so wackelt das Herz</Track>
+         <Track>Geschwinde, ihr wirbelnden Winde, BWV 201: Rezitativ : Nunmehro Richter her!</Track>
+         <Track>Geschwinde, ihr wirbelnden Winde, BWV 201: Aria : Phoebus, deine Melodei</Track>
+         <Track>Geschwinde, ihr wirbelnden Winde, BWV 201: Rezitativ : Komm, Midas, sage du nun an</Track>
+         <Track>Geschwinde, ihr wirbelnden Winde, BWV 201: Aria : Pan ist Meister, laßt ihn gehn!</Track>
+         <Track>Geschwinde, ihr wirbelnden Winde, BWV 201: Rezitativ : Wie, Midas, bist du toll?</Track>
+         <Track>Geschwinde, ihr wirbelnden Winde, BWV 201: Aria : Aufgeblasne Hitze</Track>
+         <Track>Geschwinde, ihr wirbelnden Winde, BWV 201: Rezitativ : Du guter Midas, geh nun hin</Track>
+         <Track>Geschwinde, ihr wirbelnden Winde, BWV 201: Chor : Labt das Herz, ihr holden Saiten</Track>
+         <Track>Zerreißet, zersprenget, zertrümmert die Gruft, BWV 205: Chor : Zerreißet, zersprenget, zertrümmert dir Gruft</Track>
+         <Track>Zerreißet, zersprenget, zertrümmert die Gruft, BWV 205: Rezitativ : Ja! ja! die Stunden sind nunmehro nah</Track>
+         <Track>Zerreißet, zersprenget, zertrümmert die Gruft, BWV 205: Aria : Wie will ich lustig lachen</Track>
+         <Track>Zerreißet, zersprenget, zertrümmert die Gruft, BWV 205: Rezitativ : Gefürcht'ter Äolus</Track>
+         <Track>Zerreißet, zersprenget, zertrümmert die Gruft, BWV 205: Aria : Frische Schatten, meine Freude</Track>
+         <Track>Zerreißet, zersprenget, zertrümmert die Gruft, BWV 205: Rezitativ : beinahe wirst du mich bewegen</Track>
+         <Track>Zerreißet, zersprenget, zertrümmert die Gruft, BWV 205: Aria : Können nicht die roten Wangen</Track>
+         <Track>Zerreißet, zersprenget, zertrümmert die Gruft, BWV 205: Rezitativ : So willst du, grimmger Äolus</Track>
+         <Track>Zerreißet, zersprenget, zertrümmert die Gruft, BWV 205: Aria : Angenehmer Zephyrus</Track>
+         <Track>Zerreisset, zersprenget, zertrümmert dir Gruft, BWV 205: Rezitativ : Mein Äolus, ach! störe nicht die Fröhlichkeiten</Track>
+         <Track>Zerreisset, zersprenget, zertrümmert dir Gruft, BWV 205: Aria : Zurücke, zurücke, geflügelten Winde</Track>
+         <Track>Zerreisset, zersprenget, zertrümmert dir Gruft, BWV 205: Rezitativ : Was Lust! Was Freude!</Track>
+         <Track>Zerreisset, zersprenget, zertrümmert dir Gruft, BWV 205: Aria : Zweig und Äste</Track>
+         <Track>Zerreisset, zersprenget, zertrümmert dir Gruft, BWV 205: Rezitativ : Ja, ja! ich lad euch selbs zu dieser Feier ein</Track>
+         <Track>Zerreisset, zersprenget, zertrümmert dir Gruft, BWV 205: Chor : Vivat! August, August vivat!</Track>
+         <Track>Laßt uns sorgen, laßt uns wachen, BWV 213: Chor : Laßt uns sorgen, laßt uns wachen</Track>
+         <Track>Laßt uns sorgen, laßt uns wachen, BWV 213: Rezitativ : Und Wo? Woist die rechte Bahn?</Track>
+         <Track>Laßt uns sorgen, laßt uns wachen, BWV 213 -: Aria : Schlafe, mein Liebster</Track>
+         <Track>Laßt uns sorgen, laßt uns wachen, BWV 213: Rezitativ : Auf! folge meiner Bahn?</Track>
+         <Track>Laßt uns sorgen, laßt uns wachen, BWV 213: Aria : Treues Echo dieser Orten</Track>
+         <Track>Laßt uns sorgen, laßt uns wachen, BWV 213: Rezitativ : Mein Hoffnungsvoller Held!</Track>
+         <Track>Laßt uns sorgen, laßt uns wachen, BWV 213: Aria : Auf meinen Flügeln Sollst du schweben</Track>
+         <Track>Laßt uns sorgen, laßt uns wachen, BWV 213: Rezitativ : DIe weiche Wollust locket zwar</Track>
+         <Track>Laßt uns sorgen, laßt uns wachen, BWV 213: Aria : Ich will dich nicht hören</Track>
+         <Track>Laßt uns sorgen, laßt uns wachen, BWV 213: Rezitativ : Geliebte Tugend, du allein</Track>
+         <Track>Laßt uns sorgen, laßt uns wachen, BWV 213: Duetto : Ich bin deine, du bist meine</Track>
+         <Track>Laßt uns sorgen, laßt uns wachen, BWV 213: Rezitativ : Schaut, Götter, dieses ist ein Bild</Track>
+         <Track>Laßt uns sorgen, laßt uns wachen, BWV 213: Chor : Lust der Völker, Lust der Deinen</Track>
+      </Tracks>
+      <Media>Audio CD</Media>
+      <NumMedia>2</NumMedia>
+      <Availability>Usually ships within 24 hours</Availability>
+      <Upc>794881350520</Upc>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B000005I5H/webservices-20?dev-t=AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>B000005I5H</Asin>
+      <ProductName>Beethoven: Diabelli-Variations</ProductName>
+      <Catalog>Music</Catalog>
+      <Artists>
+         <Artist>Ludwig van Beethoven</Artist>
+         <Artist>Alfredo Perl</Artist>
+      </Artists>
+      <ReleaseDate>01 January, 1998</ReleaseDate>
+      <Manufacturer>Arte Nova Records</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B000005I5H.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B000005I5H.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B000005I5H.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$5.99</ListPrice>
+      <OurPrice>$5.99</OurPrice>
+      <ThirdPartyNewPrice>$7.95</ThirdPartyNewPrice>
+      <SalesRank>171,638</SalesRank>
+      <Tracks>
+         <Track>Thema Vivace</Track>
+         <Track>Alla Marcia Maestoso</Track>
+         <Track>Poco Allegro</Track>
+         <Track>L'istesso Tempo</Track>
+         <Track>Un Poco Piu Vivace</Track>
+         <Track>Allegro Vivace</Track>
+         <Track>Allegro Ma Non Troppo E Serioso</Track>
+         <Track>Un Poco Piu Allegro</Track>
+         <Track>Poco Vivace</Track>
+         <Track>Allegro Pesante E Risoluto</Track>
+         <Track>Presto</Track>
+         <Track>Allegretto</Track>
+         <Track>Un Poco Piu Mosso</Track>
+         <Track>Vivace</Track>
+         <Track>Grave E Maestoso</Track>
+         <Track>Presto Scherzando</Track>
+         <Track>Allegro</Track>
+         <Track>Var Xvii</Track>
+         <Track>Pco Moderato</Track>
+         <Track>Presto</Track>
+         <Track>Andante</Track>
+         <Track>Allegro Con Brio</Track>
+         <Track>Allegro Molto</Track>
+         <Track>Allegro Assai</Track>
+         <Track>Fughetta Andante</Track>
+         <Track>Allegro</Track>
+         <Track>Var Xxvi</Track>
+         <Track>Vivace</Track>
+         <Track>Allegro</Track>
+         <Track>Adagio Ma Non Troppo</Track>
+         <Track>Andante Sempre Cantabile</Track>
+         <Track>Largo Molto Espressivo</Track>
+         <Track>Fuga Allegro</Track>
+         <Track>Tempo Di Menuetto</Track>
+      </Tracks>
+      <Media>Audio CD</Media>
+      <Features>
+         <Feature>Import</Feature>
+      </Features>
+      <Availability>THIS TITLE IS CURRENTLY NOT AVAILABLE. If you would like to purchase this title, we recommend that you occasionally check this page to see if it has become available.</Availability>
+      <Upc>743212776126</Upc>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B0000017OC/webservices-20?dev-t=AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>B0000017OC</Asin>
+      <ProductName>Baroque</ProductName>
+      <Catalog>Music</Catalog>
+      <Artists>
+         <Artist>Giovanni Pergolesi</Artist>
+         <Artist>Jan Van Vlijmen</Artist>
+         <Artist>Georg Philipp Telemann</Artist>
+         <Artist>Joaquin Manuel da Camara</Artist>
+         <Artist>Antonio Vivaldi</Artist>
+         <Artist>Francois Couperin</Artist>
+         <Artist>Johann Sebastian Bach</Artist>
+         <Artist>Paul Bowles</Artist>
+         <Artist>Marin Marais</Artist>
+         <Artist>Franz Waxman</Artist>
+      </Artists>
+      <ReleaseDate>10 August, 1996</ReleaseDate>
+      <Manufacturer>Astree</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B0000017OC.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B0000017OC.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B0000017OC.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$17.98</ListPrice>
+      <OurPrice>$17.98</OurPrice>
+      <UsedPrice>$9.98</UsedPrice>
+      <ThirdPartyNewPrice>$19.95</ThirdPartyNewPrice>
+      <SalesRank>376,332</SalesRank>
+      <Media>Audio CD</Media>
+      <Availability>THIS TITLE IS CURRENTLY NOT AVAILABLE. If you would like to purchase this title, we recommend that you occasionally check this page to see if it has become available.</Availability>
+      <Upc>713746019129</Upc>
+   </Details>
+</ProductInfo>
+</ProductLine>
+<ProductLine>
+   <Mode>videogames</Mode>
+   <RelevanceRank>11</RelevanceRank>
+<ProductInfo>
+   <TotalResults>11</TotalResults>
+   <TotalPages>2</TotalPages>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B00007BGU4/webservices-20?dev-t=AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>B00007BGU4</Asin>
+      <ProductName>SIMON &amp; SCHUSTER  Pearl Harbor: Zero Hour ( Windows )</ProductName>
+      <Catalog>Software</Catalog>
+      <Manufacturer>Simon &amp; Schuster</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B00007BGU4.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B00007BGU4.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B00007BGU4.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <OurPrice>$4.97</OurPrice>
+      <UsedPrice>$2.94</UsedPrice>
+      <ThirdPartyNewPrice>$4.72</ThirdPartyNewPrice>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Computer Games</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Action</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Shooters (Shooter)</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Military (Tactics)</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Flight Simulators (Simulations)</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Flightsimulator flightsim</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Flying</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Air</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>CD-ROM</Media>
+      <NumMedia>1</NumMedia>
+      <Features>
+         <Feature>Battle the Japanese Empire in ten of the most important and deadly battles of the Pacific Campaign</Feature>
+         <Feature>Get into dogfights with Japanese fighters and bombers during the Battle of Midway</Feature>
+         <Feature>Dive-bomb key military installations in 14 authentic aircraft</Feature>
+         <Feature>Fly unique training missions with the Flying Tigers</Feature>
+         <Feature>Watch an impressive reenactment of the sinking of the U.S.S. Arizona</Feature>
+      </Features>
+      <Platforms>
+         <Platform>No Operating System</Platform>
+      </Platforms>
+      <Availability>This item is not stocked or has been discontinued.</Availability>
+      <Upc>076714519817</Upc>
+      <Reviews>
+         <AvgCustomerRating>4</AvgCustomerRating>
+         <TotalCustomerReviews>1</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>4</Rating>
+            <Summary>Pretty good</Summary>
+            <Comment>This game isn't anything like the games Il-2 Sturmovick, or Microsoft simulators, but this game is pretty fun. The only view is from high above your plane, but that is not to bad because there is a wide selection of aircraft. I know a lot about WWII, and let me tell you, the B-17 preforms like B-17 and a B-29 preforms like a B-29. This game is good if it's a rainy day and there is nothing to do. Buy this game!</Comment>
+         </CustomerReview>
+      </Reviews>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B00005A3LE/webservices-20?dev-t=AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>B00005A3LE</Asin>
+      <ProductName>Pearl Harbor: Defend the Fleet</ProductName>
+      <Catalog>Software</Catalog>
+      <ReleaseDate>23 May, 2001</ReleaseDate>
+      <Manufacturer>Wizard Works</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B00005A3LE.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B00005A3LE.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B00005A3LE.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$9.99</ListPrice>
+      <OurPrice>$9.99</OurPrice>
+      <ThirdPartyNewPrice>$6.95</ThirdPartyNewPrice>
+      <SalesRank>2,150</SalesRank>
+      <Lists>
+         <ListId>3GVZRCR695DF4</ListId>
+         <ListId>31W4ZBDJ3KJNU</ListId>
+      </Lists>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>world war 2</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computer Games</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Strategy (Strategic)</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Historical (historic) Recreation (Recreations)</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Military (Wargames</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>CD-ROM</Media>
+      <NumMedia>1</NumMedia>
+      <Platforms>
+         <Platform>Windows 95</Platform>
+         <Platform>Windows 98</Platform>
+         <Platform>Windows Me</Platform>
+      </Platforms>
+      <EsrbRating>Teen</EsrbRating>
+      <Availability>Usually ships within 24 hours</Availability>
+      <Upc>722242518555</Upc>
+      <ProductDescription>The early-morning quiet is shattered by the eerie whine of dive-bombers. You're the lead gunner on deck as you attempt to defend against Zeroes, Kates, and Vals. Torpedoes rake the water, bombs scream all around, and steel meets steel as planes crash thunderously against ships. Sound effects put you viscerally in the thick of the action, and easy-to-use controls let you jump into combat right away. Three modes let you attack, defend, or evade.</ProductDescription>
+      <Reviews>
+         <AvgCustomerRating>2.61</AvgCustomerRating>
+         <TotalCustomerReviews>18</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>2</Rating>
+            <Summary>Not for the serious game players</Summary>
+            <Comment>If you are after a solid challenging game, then this is not for you. However, if you want something simple to waste time, then this game is ok.&lt;P>It is old style shooter where new things keep poping up and they get harder to hit as time moves on.&lt;P>Get the current patches! The graphics improve. However, there is still a system crash bug after the 20th level. There are also a couple bugs where there is a "magic portal" in the sky the planes use to reappear behind you. Annoying....&lt;P>Again, if you are an advanced game player you probably will not like this game.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>4</Rating>
+            <Summary>GREAT GAME ALERT!</Summary>
+            <Comment>This is a superb game! Other reviewers hate it because of it's simple play. But that is an advantage to new computer users. It only uses about 8 number keys and your mouse. Nice graphics for the time it was made. Okay, So there are disadvantages like in the game there are kamakazies in 1941. But still, My dad's (who is not one for computers!) only computer game he likes is this, Pearl Harbor: Defend the Fleet. If your thinking of buying it, DO IT! DEFENINTLY!</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>1</Rating>
+            <Summary>DO NOT BUY THIS GAME</Summary>
+            <Comment>Graphics Poor&lt;BR>Gameplay VERY Poor&lt;BR>DOES NOT SUPPORT VOODOO 3 !!...</Comment>
+         </CustomerReview>
+      </Reviews>
+   </Details>
+</ProductInfo>
+</ProductLine>
+<ProductLine>
+   <Mode>vhs</Mode>
+   <RelevanceRank>3</RelevanceRank>
+<ProductInfo>
+   <TotalResults>10</TotalResults>
+   <TotalPages>1</TotalPages>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/6304124961/webservices-20?dev-t=AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>6304124961</Asin>
+      <ProductName>Sweet Valley High:Kidnapped</ProductName>
+      <Catalog>Video</Catalog>
+      <Directors>
+         <Director>Brian Thomas Jones</Director>
+         <Director>David Winning</Director>
+         <Director>Susan Rohrer</Director>
+         <Director>Harvey Frost</Director>
+         <Director>Joel Bender</Director>
+         <Director>David Garber (II)</Director>
+         <Director>Douglas Barr (II)</Director>
+         <Director>Marc Lawrence (II)</Director>
+      </Directors>
+      <TheatricalReleaseDate>05 September, 1994</TheatricalReleaseDate>
+      <ReleaseDate>20 August, 1996</ReleaseDate>
+      <Manufacturer>Wea Corp</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/6304124961.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/6304124961.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/6304124961.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$59.99</ListPrice>
+      <OurPrice>$59.99</OurPrice>
+      <UsedPrice>$60.00</UsedPrice>
+      <ThirdPartyNewPrice>$49.99</ThirdPartyNewPrice>
+      <SalesRank>96,710</SalesRank>
+      <Lists>
+         <ListId>1NKSZSS1TPVVU</ListId>
+      </Lists>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Television</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>VHS Tape</Media>
+      <NumMedia>1</NumMedia>
+      <Features>
+         <Feature>Color</Feature>
+         <Feature>Closed-captioned</Feature>
+         <Feature>NTSC</Feature>
+      </Features>
+      <MpaaRating>NR (Not Rated)</MpaaRating>
+      <Availability>THIS TITLE IS CURRENTLY NOT AVAILABLE. If you would like to purchase this title, we recommend that you occasionally check this page to see if it has become available.</Availability>
+      <Upc>729014206436</Upc>
+      <Reviews>
+         <AvgCustomerRating>5</AvgCustomerRating>
+         <TotalCustomerReviews>2</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>Where's the DVD????</Summary>
+            <Comment>Sweet Valley High was one of the sharpest, most clever, and terribly underrated teen shows out there that unjustly got cancelled after four delightful seasons, and has not yet been released on DVD. While I wish the series would have concentrated more on serious issues, the tone of the series was light, fluffy, and fun with some seriousness thrown into the mix. &lt;P>Kidnapped was one of the more serious, but ludicrous, storylines from Season 1, edited as one episode for this video release. The first episode is like any other of Sweet Valley High; cute and harmless. Elizabeth volunteers at the hospital, where a famous talk show host is a patient. This grabs her twin sister Jessica's interest and she tries to sneak in to meet the man and nab a job as his new co-host. In order to do that, she has to pretend to be Elizabeth, with humorous results. On a more serious note, while at the hospital, a quiet orderly, Peter, becomes fascinated by Elizabeth and begins sending her gifts as a secret admirer. This pisses off her boyfriend, Todd, who thinks his best friend, Winston, is the one sending the gifts because he and Elizabeth have grown so close. This causes a rivalry between the friends and, in the second episode, makes Winston a suspect when Peter kidnaps Elizabeth. The third episode, the most ridiculous of the three, finds Peter, who escaped from the police car at the end of episode 2, kidnapping Jessica, who he thinks is Elizabeth. Episode 2 also introduces Nick, a charming rich transfer student who grabs Jessica and Lila's attention, and unknowingly comes between Todd and Elizabeth in the season finale, setting up Season 2.&lt;P>This is a fun video, but is definitely not the best of Season 1, which overall, is the best season of the series. The episodes are addicting, but rather far-fetched. The earlier episodes of the season are far superior and I can't wait till the seasons are released on DVD. It's long been delayed.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>cool</Summary>
+            <Comment>hi! this is a episode from the show sweet valley high it was a really cool show bye.bye!</Comment>
+         </CustomerReview>
+      </Reviews>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B000035Z2S/webservices-20?dev-t=AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>B000035Z2S</Asin>
+      <ProductName>Tarzan</ProductName>
+      <Catalog>Video</Catalog>
+      <Starring>
+         <Actor>Tony Goldwyn</Actor>
+         <Actor>Minnie Driver</Actor>
+      </Starring>
+      <Directors>
+         <Director>Chris Buck (II)</Director>
+         <Director>Kevin Lima</Director>
+      </Directors>
+      <TheatricalReleaseDate>18 June, 1999</TheatricalReleaseDate>
+      <ReleaseDate>01 February, 2000</ReleaseDate>
+      <Manufacturer>Disney Studios</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B000035Z2S.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B000035Z2S.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B000035Z2S.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$26.99</ListPrice>
+      <OurPrice>$22.99</OurPrice>
+      <UsedPrice>$3.25</UsedPrice>
+      <CollectiblePrice>$3.59</CollectiblePrice>
+      <ThirdPartyNewPrice>$10.95</ThirdPartyNewPrice>
+      <SalesRank>54</SalesRank>
+      <Lists>
+         <ListId>165GHYEQ5JR3P</ListId>
+         <ListId>2AL0C7RHCTKLC</ListId>
+         <ListId>2XRD0E8EN8FVR</ListId>
+      </Lists>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Feature Film Family</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>VHS Tape</Media>
+      <NumMedia>1</NumMedia>
+      <Features>
+         <Feature>Color</Feature>
+         <Feature>Closed-captioned</Feature>
+         <Feature>Animated</Feature>
+         <Feature>NTSC</Feature>
+      </Features>
+      <MpaaRating>G (General Audience)</MpaaRating>
+      <Availability>THIS TITLE IS CURRENTLY NOT AVAILABLE. If you would like to purchase this title, we recommend that you occasionally check this page to see if it has become available.</Availability>
+      <Upc>786936089868</Upc>
+      <ProductDescription>After viewing &lt;I>Snow White and the Seven Dwarfs&lt;/I>, Edgar Rice Burroughs wrote to Walt Disney about adapting his novel of an ape-man into a feature animated cartoon. Sixtysome years later, the tale is finally told with brilliant design work that looks unlike any previous animated film. The story is a natural for Disney since the themes of misunderstood central figures have been at the heart of its recent hits. Disney's &lt;I>Tarzan&lt;/I> doesn't wander far from the familiar story of a shipwrecked baby who is brought up by apes in Africa. What gives the film its zing is its clever use of music (the songs are sung by Phil Collins himself rather than onscreen characters) and the remarkable animation. Deep Canvas, a 3-D technology, was developed for the film, creating a jungle that comes alive as Tarzan swings through the trees, often looking like a modern skateboarder racing down giant tree limbs. The usual foray of sidekicks, including a rambunctious ape voiced by Rosie O'Donnell, should keep the little ones aptly entertained. The two lead voices, Tony Goldwyn as Tarzan and Minnie Driver as Jane, are inspired choices. Their chemistry helps the story through the weakest points (the last third) and makes Tarzan's initial connection with all things human (including Jane) delicious entertainment. Disney still is not taking risks in its animated films, but as cookie-cutter entertainment, &lt;I>Tarzan&lt;/I> makes a pretty good treat. (Ages 5 and up) &lt;I>--Doug Thomas&lt;/I></ProductDescription>
+      <Reviews>
+         <AvgCustomerRating>4.11</AvgCustomerRating>
+         <TotalCustomerReviews>300</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>great retelling of well-worn story</Summary>
+            <Comment>I never have found out how many screen versions of 'Tarzan' Hollywood has put out over the years, but this version simply has to be one of the best. Inspired vocal casting, fantastic songs by Phil Collins(who won an oscar for his work), and some incredible animation make a very special film. It's solid from the beginning, showing Tarzan's parents surviving a shipwreck, through their deaths at the hands of a leopard, to his discovery by and childhood with a lonely female gorilla, through his adolescence and bewilderment at being so diferent from everyone else. I ask you, who hasn't felt like a total outsider at some point in their life? Disney's animators captured that feeling flawlessly in this film. His happiness at finding others like himself, his joy in discovering what it is to be human, his love for Jane, and his real pain at choosing to be with her intsead of his adopted mother. What an emotional roller-coaster. The last third of the movie really picks up steam when a member of the human party takes over and tries to capture the animals to take back to London for money, and battles Tarzan in a climactic battle at the end. This film stands as one of the best produced by the Disney Studio, and I loved it the first time I saw it in theaters, and it was one I quickly added to my DVD collection. Watch, and enjoy!</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>2</Rating>
+            <Summary>Disneyfication of Tarzan</Summary>
+            <Comment>Disney gives _Tarzan_ the usual treatment. The result is for fans of the Disney formula only.&lt;P>Though touted as a faithful adaption of Burrough's novel this film bears little resemblence to that book. (Though it is perhaps slightly closer to the source material than the similarly touted _Greystoke_).&lt;P>Instead, Disney places the familiar character through the typical Disney paces: teaching lessons of tolerence and envornmentalism that sophisticated 9 year olds will find trite.&lt;P>The generic formula films that Disney produces work best when the music, comedy, and animation offer something for adults as well as children. In this case Disney is 1 out of 3. The animation is specacular. But the humor is generally weak--there are a few genuine laughs, most curtesy of Rosie O'Donnell as Tarzan's childhood ape friend--and the music by ex-Genesis lead singer/drummer Phil Collins is sleep inducingly dull.&lt;P>Still, kids seemed to like it so as a children's movie score this one as a success. But it's only recommended for adults who liked _Pocahontas_, _Mulan_, or _The Hunchback of Notre Dame_. If you were hoping for another _Little Mermaid_ or _Beauty and the Beasts_ or even _Aladin_, skip this one.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>4</Rating>
+            <Summary>*****Wow!******</Summary>
+            <Comment>This is a great movie but its the kind that you can get a little tired of after a while. I didn't really care for Minnie Driver's voice for Jane Porter; it didn't fit somehow. And while the music in Trashin' the camp was differant from the rest of the soundtrack,it was refreshing and I thought it fit perfectly with the destruction of the camp.&lt;BR> Phil Collins did a superb job with the music. I got goosebumps on several parts,he's that good. His singing voice just seems to fit with the wild jungle setting. All in all,a good movie.</Comment>
+         </CustomerReview>
+      </Reviews>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/6304326246/webservices-20?dev-t=AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>6304326246</Asin>
+      <ProductName>Under the Domim Tree</ProductName>
+      <Catalog>Video</Catalog>
+      <Directors>
+         <Director>Eli Cohen</Director>
+      </Directors>
+      <TheatricalReleaseDate>17 May, 1996</TheatricalReleaseDate>
+      <ReleaseDate>24 February, 1998</ReleaseDate>
+      <Manufacturer>Fox Lorber</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/6304326246.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/6304326246.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/6304326246.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$19.98</ListPrice>
+      <OurPrice>$19.98</OurPrice>
+      <UsedPrice>$9.98</UsedPrice>
+      <CollectiblePrice>$18.75</CollectiblePrice>
+      <ThirdPartyNewPrice>$13.74</ThirdPartyNewPrice>
+      <SalesRank>8,774</SalesRank>
+      <Lists>
+         <ListId>20JYCDUL6BA9N</ListId>
+         <ListId>3CTSPZ2GIIRDO</ListId>
+      </Lists>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Foreign Film - Hebrew</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>VHS Tape</Media>
+      <NumMedia>1</NumMedia>
+      <Features>
+         <Feature>Color</Feature>
+         <Feature>Widescreen</Feature>
+         <Feature>Subtitled</Feature>
+         <Feature>NTSC</Feature>
+      </Features>
+      <MpaaRating>NR (Not Rated)</MpaaRating>
+      <Availability>Usually ships within 24 hours</Availability>
+      <Upc>720917012612</Upc>
+      <Reviews>
+         <AvgCustomerRating>4.5</AvgCustomerRating>
+         <TotalCustomerReviews>2</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>4</Rating>
+            <Summary>A classic israeli film</Summary>
+            <Comment>This is the next chapter in Gila Almagor's coming-of-age autobiography, begun in her film, THE SUMMER OF AVIYA. UNDER THE DOMIM TREE (or crab apple tree) continues the story five years later, in the mid-1950s, in Israel. Aviya, now 15, lives in a youth village for war orphans and teenagers from troubled homes, where she and her new friends stand in as family for one another. Aviya searches for clues to the identity of her deceased father, endures the unpredictability of her emotionally unstable mother, Henya (played by Gila Almagor herself) and is pursued by Polish-born fellow teenager, Jurek, who desperately tries to win her heart. By day Aviya and her friends laugh, play and study like other teens; by night memories of their unspeakable losses return. They find refuge together under the domim (crabapple) tree, where the story finds its surprising and exhilarating climax. Filmed in a Zionism-realism style.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>A magnificent and beautiful film--a must see</Summary>
+            <Comment>This is a beautiful and moving film about the orphan children who survive the Holocaust and are sent on aliyah to Israel where they live together in a kibbutz. You will be moved to tears by this grippingly touching film which chronicles the lives of these wonderful children who have suffered so much.</Comment>
+         </CustomerReview>
+      </Reviews>
+   </Details>
+</ProductInfo>
+</ProductLine>
+<ProductLine>
+   <Mode>toys</Mode>
+   <RelevanceRank>12</RelevanceRank>
+<ProductInfo>
+   <TotalResults>6</TotalResults>
+   <TotalPages>1</TotalPages>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B00005EBGA/webservices-20?dev-t=AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>B00005EBGA</Asin>
+      <ProductName>Pearl Harbor: Zero Hour (with CD audiobook)</ProductName>
+      <Catalog>Software</Catalog>
+      <ReleaseDate>25 May, 2001</ReleaseDate>
+      <Manufacturer>Simon &amp; Schuster Interactive</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B00005EBGA.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B00005EBGA.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B00005EBGA.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <OurPrice>$19.99</OurPrice>
+      <UsedPrice>$4.39</UsedPrice>
+      <ThirdPartyNewPrice>$4.99</ThirdPartyNewPrice>
+      <SalesRank>3,240</SalesRank>
+      <Lists>
+         <ListId>241ZZ509PRWFG</ListId>
+         <ListId>JE8I8M69IYPK</ListId>
+         <ListId>2OJZS5YGDOI85</ListId>
+      </Lists>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>world war 2</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computer Games</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Action</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>CD-ROM</Media>
+      <NumMedia>1</NumMedia>
+      <Platforms>
+         <Platform>Windows 95</Platform>
+         <Platform>Windows 98</Platform>
+      </Platforms>
+      <EsrbRating>Everyone</EsrbRating>
+      <Availability>This item is not stocked or has been discontinued.</Availability>
+      <ProductDescription>&lt;I>Pearl Harbor: Zero Hour&lt;/I> is a simple, fast, and fun shooter. Thrill to arcade air combat over land and sea as you fight Japanese forces in 10 missions drawn from the actual Pacific campaign of World War II, including the Battle of Midway and Guadalcanal. Fly 14 authentically designed American planes as you dogfight Japanese fighters and bombers, torpedo battleships and destroyers, and dive-bomb air bases and other land installations. &lt;I>Pearl Harbor: Zero Hour&lt;/I> even contains a real-time reenactment of the Japanese attack on Pearl Harbor, including the sinking of the USS Arizona.&lt;p>Also included is the complete 3-CD audiobook &lt;I>Pearl Harbor&lt;/I> by Randall Wallace--the novelization of the major motion picture (a $24 value).</ProductDescription>
+      <Reviews>
+         <AvgCustomerRating>3.59</AvgCustomerRating>
+         <TotalCustomerReviews>17</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>2</Rating>
+            <Summary>fair game</Summary>
+            <Comment>The game was ok, and kind of fun to play but i expected better graphics on it in some places you crash your plane without even knowing there was anything there such as a bluff . For the price its not bad and like i said it is fun to play, worth the price for it.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>Why this is a good game.</Summary>
+            <Comment>This is a great game for people who like fast pace and hard game. I have mircosofts combat flight sim. The controls are so hard. When I bought this game I found it much easer to control. Great for beginers like me!</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>4</Rating>
+            <Summary>Great Game!!!</Summary>
+            <Comment>I think this is a great game, my favorite flight sim. The graphics are excellent and the controls are easy. The secret planes are really fun! The one thing I don't really like about this game is that there is no scenery outside the course. But thats no handicap! If you get the patch from the website it makes it even better!!!:)</Comment>
+         </CustomerReview>
+      </Reviews>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B00013R8S8/webservices-20?dev-t=AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>B00013R8S8</Asin>
+      <ProductName>Lil' Bratz Convertible Cool with Exclusive Nazalia Doll - Pearl White</ProductName>
+      <Catalog>Toy</Catalog>
+      <ReleaseDate>09 February, 2004</ReleaseDate>
+      <Manufacturer>MGA Entertainment</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B00013R8S8.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B00013R8S8.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B00013R8S8.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <OurPrice>$14.99</OurPrice>
+      <SalesRank>5,855</SalesRank>
+      <Lists>
+         <ListId>1MKQ9ZM89ANCH</ListId>
+         <ListId>2KEBS87LX9SJ8</ListId>
+         <ListId>2KUP1B9XALLGK</ListId>
+      </Lists>
+      <Media>Toy</Media>
+      <NumMedia>1</NumMedia>
+      <AgeGroup>4 - 10 years</AgeGroup>
+      <Availability>Usually ships within 24 hours</Availability>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B0001K5IJW/webservices-20?dev-t=AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>B0001K5IJW</Asin>
+      <ProductName>1:6 R/C Cadillac Escalade: Pearl (49 MHz)</ProductName>
+      <Catalog>Toy</Catalog>
+      <Manufacturer>New Bright Industries</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B0001K5IJW.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B0001K5IJW.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B0001K5IJW.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <OurPrice>$99.99</OurPrice>
+      <SalesRank>7,705</SalesRank>
+      <Media>Toy</Media>
+      <NumMedia>1</NumMedia>
+      <Availability>Usually ships within 24 hours</Availability>
+      <Reviews>
+         <AvgCustomerRating>5</AvgCustomerRating>
+         <TotalCustomerReviews>2</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>0</Rating>
+            <Summary>The BLING BLING TRUCK</Summary>
+            <Comment>I got this truck as an early birthday present and it was the best. It had working headlights and taillights, turning signals, adjustable mirrors, 3 speeds, a horn, an opening trunk and best of all spinners. It is perfect for driving off road and on road and has the perfect speed. I would recommend this toy for anyone.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>0</Rating>
+            <Summary>this thing is so huge big large and is very cool</Summary>
+            <Comment>i have so many rc cars and trucks but this thing tops all of them so cool and big am talking big when i got it i had no idea that this thing was so big the truck is huge it made my dog run for cover and the kids when i go out side can,t belive what there seeing but this huge truck has a good speed to but what is really cool is the wheels thay do spin like the real thing but not as long so to eney rc person this thing is for you .</Comment>
+         </CustomerReview>
+      </Reviews>
+   </Details>
+</ProductInfo>
+</ProductLine>
+<ProductLine>
+   <Mode>dvd</Mode>
+   <RelevanceRank>2</RelevanceRank>
+<ProductInfo>
+   <TotalResults>5</TotalResults>
+   <TotalPages>1</TotalPages>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B000035Z2T/webservices-20?dev-t=AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>B000035Z2T</Asin>
+      <ProductName>Tarzan</ProductName>
+      <Catalog>DVD</Catalog>
+      <Starring>
+         <Actor>Tony Goldwyn</Actor>
+         <Actor>Minnie Driver</Actor>
+      </Starring>
+      <Directors>
+         <Director>Chris Buck (II)</Director>
+         <Director>Kevin Lima</Director>
+      </Directors>
+      <TheatricalReleaseDate>18 June, 1999</TheatricalReleaseDate>
+      <ReleaseDate>01 January, 2000</ReleaseDate>
+      <Manufacturer>Disney Studios</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B000035Z2T.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B000035Z2T.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B000035Z2T.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$29.99</ListPrice>
+      <OurPrice>$26.99</OurPrice>
+      <UsedPrice>$15.95</UsedPrice>
+      <CollectiblePrice>$32.50</CollectiblePrice>
+      <ThirdPartyNewPrice>$19.95</ThirdPartyNewPrice>
+      <SalesRank>212</SalesRank>
+      <Lists>
+         <ListId>3AD3N8WJ3SKM5</ListId>
+         <ListId>2E02LD5U1EFEW</ListId>
+         <ListId>1L56606VMXXYT</ListId>
+      </Lists>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Feature Film Family</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>DVD</Media>
+      <NumMedia>1</NumMedia>
+      <Features>
+         <Feature>Color</Feature>
+         <Feature>Animated</Feature>
+         <Feature>Closed-captioned</Feature>
+      </Features>
+      <MpaaRating>G (General Audience)</MpaaRating>
+      <Availability>THIS TITLE IS CURRENTLY NOT AVAILABLE. If you would like to purchase this title, we recommend that you occasionally check this page to see if it has become available.</Availability>
+      <Upc>717951004291</Upc>
+      <ProductDescription>After viewing &lt;I>Snow White and the Seven Dwarfs&lt;/I>, Edgar Rice  Burroughs wrote to Walt Disney about adapting his novel of an ape-man into a feature animated cartoon. Sixtysome years later, the tale is finally told with brilliant design work that looks unlike any previous animated film. The story is a natural for Disney since the themes of misunderstood central figures have been at the heart of its recent hits. Disney's &lt;I>Tarzan&lt;/I> doesn't wander far from the familiar story of a shipwrecked baby who is brought up by apes in Africa. What gives the film its zing is its clever use of music (the songs are sung by Phil Collins himself rather than onscreen characters) and the remarkable animation. Deep Canvas, a 3-D technology, was developed for the film, creating a jungle that comes alive as Tarzan swings through the trees, often looking like a modern skateboarder racing down giant tree limbs. The usual foray of sidekicks, including a rambunctious ape voiced by Rosie O'Donnell, should keep the little ones aptly entertained. The two lead voices, Tony Goldwyn as Tarzan and Minnie Driver as Jane, are inspired choices. Their chemistry helps the story through the weakest points (the last third) and makes Tarzan's initial connection with all things human (including Jane) delicious entertainment. Disney still is not taking risks in its animated films, but as cookie-cutter entertainment, &lt;I>Tarzan&lt;/I> makes a pretty good treat. (Ages 5 and up) &lt;I>--Doug Thomas&lt;/I></ProductDescription>
+      <Reviews>
+         <AvgCustomerRating>4.11</AvgCustomerRating>
+         <TotalCustomerReviews>300</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>great retelling of well-worn story</Summary>
+            <Comment>I never have found out how many screen versions of 'Tarzan' Hollywood has put out over the years, but this version simply has to be one of the best. Inspired vocal casting, fantastic songs by Phil Collins(who won an oscar for his work), and some incredible animation make a very special film. It's solid from the beginning, showing Tarzan's parents surviving a shipwreck, through their deaths at the hands of a leopard, to his discovery by and childhood with a lonely female gorilla, through his adolescence and bewilderment at being so diferent from everyone else. I ask you, who hasn't felt like a total outsider at some point in their life? Disney's animators captured that feeling flawlessly in this film. His happiness at finding others like himself, his joy in discovering what it is to be human, his love for Jane, and his real pain at choosing to be with her intsead of his adopted mother. What an emotional roller-coaster. The last third of the movie really picks up steam when a member of the human party takes over and tries to capture the animals to take back to London for money, and battles Tarzan in a climactic battle at the end. This film stands as one of the best produced by the Disney Studio, and I loved it the first time I saw it in theaters, and it was one I quickly added to my DVD collection. Watch, and enjoy!</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>2</Rating>
+            <Summary>Disneyfication of Tarzan</Summary>
+            <Comment>Disney gives _Tarzan_ the usual treatment. The result is for fans of the Disney formula only.&lt;P>Though touted as a faithful adaption of Burrough's novel this film bears little resemblence to that book. (Though it is perhaps slightly closer to the source material than the similarly touted _Greystoke_).&lt;P>Instead, Disney places the familiar character through the typical Disney paces: teaching lessons of tolerence and envornmentalism that sophisticated 9 year olds will find trite.&lt;P>The generic formula films that Disney produces work best when the music, comedy, and animation offer something for adults as well as children. In this case Disney is 1 out of 3. The animation is specacular. But the humor is generally weak--there are a few genuine laughs, most curtesy of Rosie O'Donnell as Tarzan's childhood ape friend--and the music by ex-Genesis lead singer/drummer Phil Collins is sleep inducingly dull.&lt;P>Still, kids seemed to like it so as a children's movie score this one as a success. But it's only recommended for adults who liked _Pocahontas_, _Mulan_, or _The Hunchback of Notre Dame_. If you were hoping for another _Little Mermaid_ or _Beauty and the Beasts_ or even _Aladin_, skip this one.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>4</Rating>
+            <Summary>*****Wow!******</Summary>
+            <Comment>This is a great movie but its the kind that you can get a little tired of after a while. I didn't really care for Minnie Driver's voice for Jane Porter; it didn't fit somehow. And while the music in Trashin' the camp was differant from the rest of the soundtrack,it was refreshing and I thought it fit perfectly with the destruction of the camp.&lt;BR> Phil Collins did a superb job with the music. I got goosebumps on several parts,he's that good. His singing voice just seems to fit with the wild jungle setting. All in all,a good movie.</Comment>
+         </CustomerReview>
+      </Reviews>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B000035Z50/webservices-20?dev-t=AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>B000035Z50</Asin>
+      <ProductName>Tarzan - Collector's Edition</ProductName>
+      <Catalog>DVD</Catalog>
+      <Starring>
+         <Actor>Tony Goldwyn</Actor>
+         <Actor>Minnie Driver</Actor>
+      </Starring>
+      <Directors>
+         <Director>Chris Buck (II)</Director>
+         <Director>Kevin Lima</Director>
+      </Directors>
+      <TheatricalReleaseDate>18 June, 1999</TheatricalReleaseDate>
+      <ReleaseDate>18 April, 2000</ReleaseDate>
+      <Manufacturer>Disney Studios</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B000035Z50.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B000035Z50.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B000035Z50.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$39.99</ListPrice>
+      <OurPrice>$35.99</OurPrice>
+      <UsedPrice>$59.95</UsedPrice>
+      <CollectiblePrice>$50.00</CollectiblePrice>
+      <ThirdPartyNewPrice>$58.75</ThirdPartyNewPrice>
+      <SalesRank>815</SalesRank>
+      <Lists>
+         <ListId>2QLXZ7VUEEH60</ListId>
+         <ListId>LEQPODFYBUG9</ListId>
+         <ListId>1D9Q62R07OQSM</ListId>
+      </Lists>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Feature Film Family</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>DVD</Media>
+      <NumMedia>2</NumMedia>
+      <Features>
+         <Feature>Color</Feature>
+         <Feature>Closed-captioned</Feature>
+         <Feature>Widescreen</Feature>
+         <Feature>Dolby</Feature>
+      </Features>
+      <MpaaRating>G (General Audience)</MpaaRating>
+      <Availability>THIS TITLE IS CURRENTLY NOT AVAILABLE. If you would like to purchase this title, we recommend that you occasionally check this page to see if it has become available.</Availability>
+      <Upc>717951007452</Upc>
+      <ProductDescription>After viewing &lt;I>Snow White and the Seven Dwarfs&lt;/I>, Edgar Rice  Burroughs wrote to Walt Disney about adapting his novel of an ape-man into a feature animated cartoon. Sixtysome years later, the tale is finally told with brilliant design work that looks unlike any previous animated film. The story is a natural for Disney since the themes of misunderstood central figures have been at the heart of its recent hits. Disney's &lt;I>Tarzan&lt;/I> doesn't wander far from the familiar story of a shipwrecked baby who is brought up by apes in Africa. What gives the film its zing is its clever use of music (the songs are sung by Phil Collins himself rather than onscreen characters) and the remarkable animation. Deep Canvas, a 3-D technology, was developed for the film, creating a jungle that comes alive as Tarzan swings through the trees, often looking like a modern skateboarder racing down giant tree limbs. The usual foray of sidekicks, including a rambunctious ape voiced by Rosie O'Donnell, should keep the little ones aptly entertained. The two lead voices, Tony Goldwyn as Tarzan and Minnie Driver as Jane, are inspired choices. Their chemistry helps the story through the weakest points (the last third) and makes Tarzan's initial connection with all things human (including Jane) delicious entertainment. Disney still is not taking risks in its animated films, but as cookie-cutter entertainment, &lt;I>Tarzan&lt;/I> makes a pretty good treat. (Ages 5 and up) &lt;I>--Doug Thomas&lt;/I></ProductDescription>
+      <Reviews>
+         <AvgCustomerRating>4.11</AvgCustomerRating>
+         <TotalCustomerReviews>300</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>great retelling of well-worn story</Summary>
+            <Comment>I never have found out how many screen versions of 'Tarzan' Hollywood has put out over the years, but this version simply has to be one of the best. Inspired vocal casting, fantastic songs by Phil Collins(who won an oscar for his work), and some incredible animation make a very special film. It's solid from the beginning, showing Tarzan's parents surviving a shipwreck, through their deaths at the hands of a leopard, to his discovery by and childhood with a lonely female gorilla, through his adolescence and bewilderment at being so diferent from everyone else. I ask you, who hasn't felt like a total outsider at some point in their life? Disney's animators captured that feeling flawlessly in this film. His happiness at finding others like himself, his joy in discovering what it is to be human, his love for Jane, and his real pain at choosing to be with her intsead of his adopted mother. What an emotional roller-coaster. The last third of the movie really picks up steam when a member of the human party takes over and tries to capture the animals to take back to London for money, and battles Tarzan in a climactic battle at the end. This film stands as one of the best produced by the Disney Studio, and I loved it the first time I saw it in theaters, and it was one I quickly added to my DVD collection. Watch, and enjoy!</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>2</Rating>
+            <Summary>Disneyfication of Tarzan</Summary>
+            <Comment>Disney gives _Tarzan_ the usual treatment. The result is for fans of the Disney formula only.&lt;P>Though touted as a faithful adaption of Burrough's novel this film bears little resemblence to that book. (Though it is perhaps slightly closer to the source material than the similarly touted _Greystoke_).&lt;P>Instead, Disney places the familiar character through the typical Disney paces: teaching lessons of tolerence and envornmentalism that sophisticated 9 year olds will find trite.&lt;P>The generic formula films that Disney produces work best when the music, comedy, and animation offer something for adults as well as children. In this case Disney is 1 out of 3. The animation is specacular. But the humor is generally weak--there are a few genuine laughs, most curtesy of Rosie O'Donnell as Tarzan's childhood ape friend--and the music by ex-Genesis lead singer/drummer Phil Collins is sleep inducingly dull.&lt;P>Still, kids seemed to like it so as a children's movie score this one as a success. But it's only recommended for adults who liked _Pocahontas_, _Mulan_, or _The Hunchback of Notre Dame_. If you were hoping for another _Little Mermaid_ or _Beauty and the Beasts_ or even _Aladin_, skip this one.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>4</Rating>
+            <Summary>*****Wow!******</Summary>
+            <Comment>This is a great movie but its the kind that you can get a little tired of after a while. I didn't really care for Minnie Driver's voice for Jane Porter; it didn't fit somehow. And while the music in Trashin' the camp was differant from the rest of the soundtrack,it was refreshing and I thought it fit perfectly with the destruction of the camp.&lt;BR> Phil Collins did a superb job with the music. I got goosebumps on several parts,he's that good. His singing voice just seems to fit with the wild jungle setting. All in all,a good movie.</Comment>
+         </CustomerReview>
+      </Reviews>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B0001KNHAO/webservices-20?dev-t=AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>B0001KNHAO</Asin>
+      <ProductName>Yossi and Jagger</ProductName>
+      <Catalog>DVD</Catalog>
+      <Starring>
+         <Actor>Ohad Knoller</Actor>
+         <Actor>Yehuda Levi</Actor>
+         <Actor>Assi Cohen (II)</Actor>
+      </Starring>
+      <Directors>
+         <Director>Eytan Fox</Director>
+      </Directors>
+      <ReleaseDate>13 April, 2004</ReleaseDate>
+      <Manufacturer>Strand Releasing</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B0001KNHAO.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B0001KNHAO.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B0001KNHAO.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$29.99</ListPrice>
+      <OurPrice>$24.59</OurPrice>
+      <UsedPrice>$14.95</UsedPrice>
+      <ThirdPartyNewPrice>$21.33</ThirdPartyNewPrice>
+      <SalesRank>1,404</SalesRank>
+      <Lists>
+         <ListId>8H536KAEFNVE</ListId>
+         <ListId>BOHYJCM2SBYE</ListId>
+         <ListId>UE2PU5MNARRR</ListId>
+      </Lists>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Foreign Film - Hebrew</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>DVD</Media>
+      <NumMedia>1</NumMedia>
+      <Features>
+         <Feature>Color</Feature>
+      </Features>
+      <MpaaRating>R (Restricted)</MpaaRating>
+      <Availability>Usually ships within 24 hours</Availability>
+      <Upc>712267230228</Upc>
+      <Reviews>
+         <AvgCustomerRating>4.04</AvgCustomerRating>
+         <TotalCustomerReviews>23</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>A moving love story....</Summary>
+            <Comment>I kept waiting for this movie to make it to our local art theater but it never came. Luckily it has arrived on dvd and I have finally had the chance to see it. Barely over an hour long, this small love story delivers a punch and good performances from the lead actors. A bonus in the film is a lot of Israeli culture and insight into the life of young Israeli soldiers.&lt;P>The story centers around two soldiers, Yossi, a respected leader and Lior (or Jagger, as his friends call him, because of his rock star good looks and charisma). Because they are gay, their love is kept secret---a position Yossi is fine with and Jagger is tired of and wants changed. The two lovers sneak away when time permits and the love they share is warm and genuine. The chemistry between the two actors if believable and you find yourself hoping for the two to live "happily ever after". &lt;P>There is not much in the way of extra features on the dvd (there is a video of the song Jagger sings to Yossi after their bout in the snow) and a few previews of other Strand Releasing videos and dvds. But it is the film that is important and this one is well worth adding to your dvd library. I highly recommend this touching love story to anyone!</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>4</Rating>
+            <Summary>Less is more</Summary>
+            <Comment>This Israeli film clocks in at just a little over 1 hour but it manages to establish more character development than most films twice that length as well as displaying a complex array of human emotions. &lt;P>The story takes place in an army camp on a remote snowy mountaintop near the Lebanon border. Yossi, a commander, is in love with the cute and free spirited soldier Jagger. Yossi has a "don't ask, don't tell" view on their relationship while Jagger is much more open and wants to be able to rent a hotel room "with one bed, not two." The film deftly handles the intricies of their relationship but this is much more than a gay romance film. The dullness and claustrophobic conditions of army life is skillfully depicted with the help of a shaky camera that gives the film a documentary look.&lt;P>Secondary characters sustain interest also and include two female soldiers - one is having an affair with a married officer and the other has a crush on Jagger, despite the fact that almost everyone has told her that "you're not really his type." &lt;P>This film could probably have been more affecting with a little more time (the ending seems a little abrupt) but it still delivers quite a punch for such a small film.&lt;P>The only dvd extras are a music video which is a shame. It would have been nice to learn more about the filmmaker and the wonderful actors who appear in the film.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>Powerful, passionate, tragic.</Summary>
+            <Comment>I saw Yossi and Jagger @ a Jewish Film Festival. I wasn't sure what to expect!It was tender,funny, showed good insight into life during an Israeli tour of duty. The girls were great! I wish it could have been longer. I cried and cried at the ending.I searched and waited a year to buy this movie,I've watched it many times and highly reccomend it,it is one my favourite movies.Does anyone know the title of the song Rita sings? or who sings in the music video at the end? I'd prefer a hebrew version.</Comment>
+         </CustomerReview>
+      </Reviews>
+   </Details>
+</ProductInfo>
+</ProductLine>
+<ProductLine>
+   <Mode>kitchen</Mode>
+   <RelevanceRank>15</RelevanceRank>
+<ProductInfo>
+   <TotalResults>5</TotalResults>
+   <TotalPages>1</TotalPages>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B0001VDEPG/webservices-20?dev-t=AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>B0001VDEPG</Asin>
+      <ProductName>Bremer Silberschmied Klassich Perl (Stainless) 8 1/2" Modern Hollow Knife</ProductName>
+      <Catalog>Kitchen</Catalog>
+      <Manufacturer>Bremer Silberschmied</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B0001VDEPG.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B0001VDEPG.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B0001VDEPG.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <Features>
+         <Feature>The image above represents only the pattern and style of the product for sale on this page</Feature>
+         <Feature>Pattern: Bremer Silberschmied Klassich Perl (Stainless)</Feature>
+         <Feature>Pattern Description: Stainless, Glossy, Beaded Edge</Feature>
+         <Feature>Length: 8 1/2 Inches</Feature>
+         <Feature>Other serving and accessory pieces may be available in this pattern!</Feature>
+      </Features>
+      <Availability>This item is not stocked or has been discontinued.</Availability>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B0001VDEQ0/webservices-20?dev-t=AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>B0001VDEQ0</Asin>
+      <ProductName>Bremer Silberschmied Klassich Perl (Stainless) 7 5/8" Fork</ProductName>
+      <Catalog>Kitchen</Catalog>
+      <Manufacturer>Bremer Silberschmied</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B0001VDEQ0.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B0001VDEQ0.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B0001VDEQ0.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <Features>
+         <Feature>Pattern: Bremer Silberschmied Klassich Perl (Stainless)</Feature>
+         <Feature>Pattern Description: Stainless, Glossy, Beaded Edge</Feature>
+         <Feature>Length: 7 5/8 Inches</Feature>
+         <Feature>Other serving and accessory pieces may be available in this pattern!</Feature>
+      </Features>
+      <Availability>This item is not stocked or has been discontinued.</Availability>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B0001VDEQK/webservices-20?dev-t=AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>B0001VDEQK</Asin>
+      <ProductName>Bremer Silberschmied Klassich Perl (Stainless) 6 7/8" Individual Salad Fork</ProductName>
+      <Catalog>Kitchen</Catalog>
+      <Manufacturer>Bremer Silberschmied</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B0001VDEQK.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B0001VDEQK.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B0001VDEQK.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <Features>
+         <Feature>The image above represents only the pattern and style of the product for sale on this page</Feature>
+         <Feature>Pattern: Bremer Silberschmied Klassich Perl (Stainless)</Feature>
+         <Feature>Pattern Description: Stainless, Glossy, Beaded Edge</Feature>
+         <Feature>Length: 6 7/8 Inches</Feature>
+         <Feature>Other serving and accessory pieces may be available in this pattern!</Feature>
+      </Features>
+      <Availability>This item is not stocked or has been discontinued.</Availability>
+   </Details>
+</ProductInfo>
+</ProductLine>
+<ProductLine>
+   <Mode>apparel</Mode>
+   <RelevanceRank>7</RelevanceRank>
+<ProductInfo>
+   <TotalResults>1</TotalResults>
+   <TotalPages>1</TotalPages>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B00018A9I4/webservices-20?dev-t=AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>B00018A9I4</Asin>
+      <ProductName>Perl Camel - Black, XXL</ProductName>
+      <Catalog>Apparel</Catalog>
+      <Manufacturer>ThinkGeek</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B00018A9I4.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B00018A9I4.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B00018A9I4.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <OurPrice>$15.99</OurPrice>
+      <Features>
+         <Feature>100% cotton</Feature>
+         <Feature>pre-shrunk</Feature>
+         <Feature>heavyweight</Feature>
+      </Features>
+      <Availability>We will e-mail you when this item becomes available</Availability>
+   </Details>
+</ProductInfo>
+</ProductLine>
+<ProductLine>
+   <Mode>jewelry</Mode>
+   <RelevanceRank>20</RelevanceRank>
+<ProductInfo>
+   <TotalResults>1</TotalResults>
+   <TotalPages>1</TotalPages>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B00014QBMQ/webservices-20?dev-t=AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>B00014QBMQ</Asin>
+      <ProductName>Pearl &amp; Peridot Pin, brooche</ProductName>
+      <Catalog>Jewelry</Catalog>
+      <Manufacturer>Ora Jewels</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B00014QBMQ.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B00014QBMQ.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B00014QBMQ.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <OurPrice>$316.34</OurPrice>
+      <Availability>This item is not stocked or has been discontinued.</Availability>
+   </Details>
+</ProductInfo>
+</ProductLine>
+<ProductLine>
+   <Mode>software</Mode>
+   <RelevanceRank>13</RelevanceRank>
+<ProductInfo>
+   <TotalResults>1</TotalResults>
+   <TotalPages>1</TotalPages>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B0000C0YMS/webservices-20?dev-t=AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>B0000C0YMS</Asin>
+      <ProductName>Using Perl/GCI Scripts</ProductName>
+      <Catalog>Software</Catalog>
+      <Manufacturer>Lynda.com, Inc.</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B0000C0YMS.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B0000C0YMS.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B0000C0YMS.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <OurPrice>$39.95</OurPrice>
+      <Media>CD-ROM</Media>
+      <Features>
+         <Feature>Designed for Web professionals by Bill Weinman</Feature>
+         <Feature>2.5 hours of simple step-by-step instructions</Feature>
+         <Feature>Learn to edit &amp; install a Perl script on your server, &amp; make simple modifications</Feature>
+         <Feature>Complete with working examples</Feature>
+         <Feature>Counters, contact forms, a Web blog, &amp; more</Feature>
+      </Features>
+      <Platforms>
+         <Platform>Windows 98</Platform>
+         <Platform>Windows NT</Platform>
+         <Platform>Windows 2000</Platform>
+         <Platform>Windows Me</Platform>
+      </Platforms>
+      <Availability>This item is not stocked or has been discontinued.</Availability>
+   </Details>
+</ProductInfo>
+</ProductLine>
+</BlendedSearch>

Added: packages/libnet-amazon-perl/branches/upstream/current/t/canned/browse.xml
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/t/canned/browse.xml	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/t/canned/browse.xml	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?><ProductInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xml.amazon.com/schemas2/dev-heavy.xsd">
+
+   <TotalResults>3</TotalResults>
+   <TotalPages>1</TotalPages>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/1571691014/webservices-20?dev-t=MY_AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>1571691014</Asin>
+      <ProductName>Cgi Programming Interactive Course</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>Reuven Lerner</Author>
+      </Authors>
+      <ReleaseDate>October, 1997</ReleaseDate>
+      <Manufacturer>Waite Group Pr</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/1571691014.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/1571691014.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/1571691014.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$49.99</ListPrice>
+      <OurPrice>$49.99</OurPrice>
+      <SalesRank>2,512,920</SalesRank>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>CGI (Computer network protocol</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Web servers</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computer programs</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computer Interfaces</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Data Transmission Systems - General</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computers</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Hardcover</Media>
+      <Isbn>1571691014</Isbn>
+      <Availability>Out of Print--Limited Availability</Availability>
+      <Reviews>
+         <AvgCustomerRating>0</AvgCustomerRating>
+         <TotalCustomerReviews>0</TotalCustomerReviews>
+      </Reviews>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/1562439588/webservices-20?dev-t=MY_AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>1562439588</Asin>
+      <ProductName>Mastering Cgi/Perl One-Day Course</ProductName>
+      <Catalog>Book</Catalog>
+      <ReleaseDate>November, 1900</ReleaseDate>
+      <Manufacturer>DDC Publishing, Inc.</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/1562439588.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/1562439588.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/1562439588.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$22.00</ListPrice>
+      <OurPrice>$22.00</OurPrice>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Computer Books: General</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Paperback</Media>
+      <Isbn>1562439588</Isbn>
+      <Availability>Out of Print--Limited Availability</Availability>
+      <Reviews>
+         <AvgCustomerRating>0</AvgCustomerRating>
+         <TotalCustomerReviews>0</TotalCustomerReviews>
+      </Reviews>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/1585770671/webservices-20?dev-t=MY_AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>1585770671</Asin>
+      <ProductName>Developing Cgi Scripts Using Perl One-Day Course</ProductName>
+      <Catalog>Book</Catalog>
+      <ReleaseDate>November, 1900</ReleaseDate>
+      <Manufacturer>DDC Publishing, Inc.</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/1585770671.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/1585770671.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/1585770671.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$30.00</ListPrice>
+      <OurPrice>$30.00</OurPrice>
+      <SalesRank>2,520,242</SalesRank>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Computer Books: General</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Paperback</Media>
+      <Isbn>1585770671</Isbn>
+      <Availability>Out of Print--Limited Availability</Availability>
+      <Reviews>
+         <AvgCustomerRating>0</AvgCustomerRating>
+         <TotalCustomerReviews>0</TotalCustomerReviews>
+      </Reviews>
+   </Details>
+</ProductInfo>

Added: packages/libnet-amazon-perl/branches/upstream/current/t/canned/dvd.xml
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/t/canned/dvd.xml	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/t/canned/dvd.xml	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?><ProductInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xml.amazon.com/schemas3/dev-heavy.xsd">
+
+<Request><Args><Arg value="libwww-perl/5.76" name="UserAgent"></Arg><Arg value="1" name="page"></Arg><Arg value="YOUR_AMZN_TOKEN" name="dev-t"></Arg><Arg value="xml" name="f"></Arg><Arg value="heavy" name="type"></Arg><Arg value="02JG80RP8X0ADEC5PJCR" name="RequestID"></Arg><Arg value="6305181772" name="AsinSearch"></Arg><Arg value="us" name="locale"></Arg><Arg value="webservices-20" name="t"></Arg><Arg value="books" name="mode"></Arg><Arg value="+salesrank" name="sort"></Arg></Args></Request>   <Details url="http://www.amazon.com/exec/obidos/ASIN/6305181772/webservices-20?dev-t=YOUR_AMZN_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>6305181772</Asin>
+      <ProductName>Mission Impossible</ProductName>
+      <Catalog>DVD</Catalog>
+      <Starring>
+         <Actor>Tom Cruise</Actor>
+         <Actor>Jon Voight</Actor>
+         <Actor>Emmanuelle Béart</Actor>
+      </Starring>
+      <Directors>
+         <Director>Brian De Palma</Director>
+      </Directors>
+      <TheatricalReleaseDate>22 May, 1996</TheatricalReleaseDate>
+      <ReleaseDate>19 August, 2003</ReleaseDate>
+      <Manufacturer>Paramount Studio</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/6305181772.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/6305181772.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/6305181772.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$19.99</ListPrice>
+      <OurPrice>$17.99</OurPrice>
+      <UsedPrice>$9.48</UsedPrice>
+      <ThirdPartyNewPrice>$12.60</ThirdPartyNewPrice>
+      <SalesRank>2,983</SalesRank>
+      <Lists>
+         <ListId>9EU0KCW0Y41D</ListId>
+         <ListId>U4IFXSTRXYT7</ListId>
+         <ListId>1A0OA3KN1UZM4</ListId>
+      </Lists>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Feature Film-action/Adventure</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>DVD</Media>
+      <NumMedia>1</NumMedia>
+      <Features>
+         <Feature>Color</Feature>
+         <Feature>Closed-captioned</Feature>
+         <Feature>Widescreen</Feature>
+      </Features>
+      <MpaaRating>PG-13 (Parental Guidance Suggested)</MpaaRating>
+      <Availability>Usually ships within 24 hours</Availability>
+      <Upc>097361549774</Upc>
+      <ProductDescription>A flashy, splashy summer-movie blockbuster that's fun and exciting without being mindless? That's the impossible mission accomplished by director Brian De Palma, star-coproducer Tom Cruise, and the crack team of &lt;I>Mission: Impossible&lt;/I>. Based on the '60s TV show and an almost impenetrably complex (but nonetheless thrilling) original story by David Koepp (&lt;I>Jurassic Park&lt;/I>) and Steven Zaillian (&lt;I>Schindler's List&lt;/I>), with a screenplay by Koepp and Robert Towne (&lt;I>Chinatown&lt;/I>, &lt;I>Shampoo&lt;/I>), &lt;I>Mission: Impossible&lt;/I> begins with veteran agent Jim Phelps (Jon Voight) and his expert crew embarking on a mission that goes horribly, horribly wrong. But nothing is what it seems. The nail-biting set piece--always a signature of director De Palma (&lt;I>Carrie&lt;/I>, &lt;I>The Untouchables&lt;/I>)--in which Cruise is lowered from the ceiling to retrieve information from a computer in a high-security vault--is an instant classic. But perhaps even more impressive, at least in retrospect, is a flashback sequence in which two characters attempt to reconstruct a series of events from multiple points of view. It's pretty daring and sophisticated stuff for a big-budget spy movie, but brains were always what put the &lt;I>Mission: Impossible&lt;/I> team ahead of the competition, anyway, no? &lt;I>--Jim Emerson&lt;/I></ProductDescription>
+      <Reviews>
+         <AvgCustomerRating>3.71</AvgCustomerRating>
+         <TotalCustomerReviews>139</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>4</Rating>
+            <Summary>Mission: Not Exactly Accomplished</Summary>
+            <Comment>"Mission: Impossible" was (I thought) supposed to be the movie sequel to the classic TV series. If not, why call it "Mission: Impossible"? But something happened on the way to the theater, because this is nothing like the old TV show. In fact, any similarity appears to be purely coincidental. And that's the major problem with this film. The title raises expectations, but the film doesn't deliver on those expectations.&lt;P>Taken purely as a spy thriller, this flick is fine. It has some great action sequences. In particular, the CIA break-in is clever and tense. The end piece in the tunnel is also entertaining, but it stretches credibility a long way. The plot is almost too complicated -- sometimes it's hard to keep up with who is doing what to whom. But, hey, that's good. Better a bit complex than so simple a two-year-old could keep up. The acting is generally acceptable, too. Yeah, Tom Cruise is a little hard to accept as a master spy, but he gets by.&lt;P>As a spy thriller, "Mission: Impossible" is a strong four star effort (maybe even a soft five stars). That it's linked with the "Mission: Impossible" TV series is a negative. I'd still like to see an "M:I" movie. You know: top agent gets extremely difficult assignments, formulates plans, picks teams of operatives with suitable skills and abilities, and, using a combination of sleight-of-hand, high tech trickery, and sheer daring, achieves the objective. Those were great fun. This film is also fun, but "M:I" it isn't. I'm giving it four stars strictly on its own merits. Rated as a "Mission: Impossible" sequel it would get only two stars.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>4</Rating>
+            <Summary>Alot of bark. No bite.</Summary>
+            <Comment>In the style of my favorite DVD site, IGN.com, I'm going to review this movie based on four areas: The movie, the video, the audio, and the extras.&lt;P>THE MOVIE Wow. Tom Cruise is at his energetic best. Ethan Hunt is a young and very skilled IMF operative. After all, his mentor is one of the best: Jim Phelps. A man named Golitsyn has gotten himself into a position to steal the CIA's NOC list, and has the intent of selling it on the black market. Phelps, along with Ethan Hunt and the other four members of his IMF team are given the mission to catch Golitsyn in the act of stealing the NOC list, apprehend him, thereby retrieving the stolen list. Everything goes wrong. All members of the team, except Ethan are killed, including Phelps. The operation was a molehunt. Hunt is supected of the killings, and accused of imbessling money from the CIA. This is just the surface. There are many many more major-players, all part of a huge and complex conspiracy. Brian De Palma did an amazing job. This film is visual feast, for half the story is told through camera movement. The film's plot is extremely complicated. I have watched the film several times, and everytime I do, I notice something new and a another little detail that makes more sense of the plot. This film is one that has to be watched closely. Many of the plot points and nuances are subtle and require you to pay close attention. An Action/suspense film that has brains. Who would have thought?&lt;P>THE VIDEO&lt;P> Stunning. A little dirty, but that is expected. After all, an original theatrical print was used for the transfer. Slight graniness, but you won't really notice unless finding flaws is the reason you are watching the movie. You also have the choice of watching the film in Pan-and-Scan or Widescreen.&lt;P>THE AUDIO&lt;P> Pretty good if you have the right equipment.I usually set the disc at Dolby 5.1 sound. That option is great if you have good speakers. For those of you that hve just your Televisions, keep the disc on 2 channel. You also have the option to watch it in French.&lt;P>THE EXTRA&lt;P> The heading should be THE EXTRAS. However, there is only one extra. All you get is the theatrical trailer. That isn't bad, but is definately not enough. Sorry, but scene selection, interactive menus, captions, and subtitles do not count as special features, especially to today's DVD's standards. (Have you seen the Fight Club DVD?)&lt;P> Not a bad package when you consider the quality of the sound and video, but special features are very important. Without them, you might as well go and and buy the VHS version, and save yourself a couple of bucks.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>3</Rating>
+            <Summary>why all the bad review?</Summary>
+            <Comment>Mission: Impossible is one of the rare-good spy movies out there. In almost every way, it surpasses M:I-2 in terms of story, suspense, and acting. This movie proves a spy movie doesn't need a lot of action to be good. &lt;BR>As the movie starts, agent Ethan Hunt and his team start on a normal mission, when it starts to go terribly wrong. One by one, his team is killed, and he must find out who killed his team and who set him up. My personal favorite scene is when Ethan Hunt (Tom Cruise) blows up the fish tank.&lt;P>critics are ass-heads</Comment>
+         </CustomerReview>
+      </Reviews>
+   </Details>
+</ProductInfo>

Added: packages/libnet-amazon-perl/branches/upstream/current/t/canned/exchange.xml
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/t/canned/exchange.xml	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/t/canned/exchange.xml	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?><ExchangeSearch xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xml.amazon.com/schemas3/dev-lite.xsd">
+
+<Request><Args><Arg value="libwww-perl/5.803" name="UserAgent"></Arg><Arg value="0G3PJQM4MZVS91DH5BY2" name="RequestID"></Arg><Arg value="us" name="locale"></Arg><Arg value="1" name="page"></Arg><Arg value="[dev token here]" name="dev-t"></Arg><Arg value="webservices-20" name="t"></Arg><Arg value="xml" name="f"></Arg><Arg value="Y04Y3424291Y2398445" name="ExchangeSearch"></Arg><Arg value="" name="mode"></Arg><Arg value="lite" name="type"></Arg><Arg value="+salesrank" name="sort"></Arg></Args></Request>   <ListingProductDetails>
+      <ExchangeId>Y04Y3424291Y2398445</ExchangeId>
+      <ListingId>0219T568068</ListingId>
+      <ExchangeTitle>Bold Visions for the Garden: Basics, Magic &amp; Inspiration [Paperback]  by...</ExchangeTitle>
+      <ExchangeDescription>Title: Bold Visions for the Garden: Basics, Magic &amp; Inspiration
+: Hartlage, Richard W.
+</ExchangeDescription>
+      <ExchangePrice>$11.95</ExchangePrice>
+      <ExchangeAsin>1555913164</ExchangeAsin>
+      <ExchangeEndDate>02/04/2008 04:32:20 PST</ExchangeEndDate>
+      <ExchangeOfferingType>used</ExchangeOfferingType>
+      <ExchangeSellerId>AZPQKLIWQKVZ</ExchangeSellerId>
+      <ExchangeSellerNickname>powells_books</ExchangeSellerNickname>
+      <ExchangeStartDate>02/19/2005 04:32:20 PST</ExchangeStartDate>
+      <ExchangeStatus>Open</ExchangeStatus>
+      <ExchangeQuantity>1</ExchangeQuantity>
+      <ExchangeQuantityAllocated>0</ExchangeQuantityAllocated>
+      <ExchangeFeaturedCategory>68297</ExchangeFeaturedCategory>
+      <ExchangeConditionType>verygood</ExchangeConditionType>
+      <ExchangeAvailability>Usually ships in 1-2 business days</ExchangeAvailability>
+      <ExchangeSellerRating>4.7</ExchangeSellerRating>
+   </ListingProductDetails>
+</ExchangeSearch>

Added: packages/libnet-amazon-perl/branches/upstream/current/t/canned/keyword.xml
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/t/canned/keyword.xml	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/t/canned/keyword.xml	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,409 @@
+<?xml version="1.0" encoding="UTF-8"?><ProductInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xml.amazon.com/schemas3/dev-heavy.xsd">
+
+<Request><Args><Arg value="libwww-perl/5.76" name="UserAgent"></Arg><Arg value="1D4EECR73VG7D3G9T0F4" name="RequestID"></Arg><Arg value="us" name="locale"></Arg><Arg value="1" name="page"></Arg><Arg value="perl power" name="KeywordSearch"></Arg><Arg value="YOUR_AMZN_TOKEN" name="dev-t"></Arg><Arg value="webservices-20" name="t"></Arg><Arg value="xml" name="f"></Arg><Arg value="books" name="mode"></Arg><Arg value="heavy" name="type"></Arg><Arg value="+salesrank" name="sort"></Arg></Args></Request>   <TotalResults>6</TotalResults>
+   <TotalPages>1</TotalPages>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/1861004494/webservices-20?dev-t=YOUR_AMZN_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>1861004494</Asin>
+      <ProductName>Professional Perl Programming</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>Peter Wainwright</Author>
+         <Author>Aldo Calpini</Author>
+         <Author>Arthur Corliss</Author>
+         <Author>Juan Julian Merelo Guervos</Author>
+         <Author>Chris Nandor</Author>
+         <Author>Aalhad Saraf</Author>
+         <Author>Shelley Powers</Author>
+         <Author>Arthur Corliss</Author>
+         <Author>Simon Cozens</Author>
+         <Author>JJ Merelo-Guervos</Author>
+      </Authors>
+      <ReleaseDate>February, 2001</ReleaseDate>
+      <Manufacturer>Wrox Press Inc</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/1861004494.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/1861004494.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/1861004494.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$59.99</ListPrice>
+      <OurPrice>$59.99</OurPrice>
+      <UsedPrice>$5.24</UsedPrice>
+      <CollectiblePrice>$38.12</CollectiblePrice>
+      <ThirdPartyNewPrice>$4.90</ThirdPartyNewPrice>
+      <SalesRank>190,686</SalesRank>
+      <Lists>
+         <ListId>3K5KHAMQDHZPL</ListId>
+         <ListId>2G9AXENSOIAWP</ListId>
+      </Lists>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Computer Bks - Languages / Programming</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computer Books: General</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computers</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Internet - General</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Perl (Computer program language)</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Programming - General</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Programming Languages - CGI, Javascript, Perl, VBScript</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Paperback</Media>
+      <NumMedia>1</NumMedia>
+      <Isbn>1861004494</Isbn>
+      <Availability>Out of Print--Limited Availability</Availability>
+      <Reviews>
+         <AvgCustomerRating>3.8</AvgCustomerRating>
+         <TotalCustomerReviews>5</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>3</Rating>
+            <Summary>very detailed but not easy to read</Summary>
+            <Comment>The book is very detailed and comprehensive, but it is not easy to read and probably not suitable for beginners. Specifically, it does not provide complete examples with inputs, code, and output. There are also plenty of typos and small errors. &lt;P>Still, in all fairness, this is a very comprehensive book with lots of topics not covered in other books. Also the paper is of good quality. Probably every advanced user should go through the book to pick up on things other books leave out.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>Highly recommended for a broad audience</Summary>
+            <Comment>This is a very good Perl book! For beginners, intermediates or even advanced programmers in Perl. The book takes you from the basics to advanced applied Perl programming concepts.&lt;BR>The book manages what many others fail to do: It might be the only Perl book you ever need. If you worked through this book, additional information is readily available on the Internet. This book is comprehensive enough to cover everything you need to know about the Perl language to write large scale 'mission critical' applications. &lt;BR>Admitted, if you already own the O'Reillys 'Learning Perl', 'Perl' and 'Perl Cookbook' this book will not contain many news. However, it is written very well and it is understandable, something I cannot always say about the 'original' Perl books or documentation.&lt;BR>If you do web programming, a logical addition to this book is 'Professional Perl Development' which offers lots of good information on how to design sophisiticated web applications.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>An excellent book for advanced programmers.</Summary>
+            <Comment>This is an excellent, thorough, fairly advanced book. &lt;P>Until now, I was an o'reilly zealot, clinging to my camel book and my CD bookshelf as the Only True Word. &lt;P>Finally, here is the first real competitor to that series of books, with a fresh approach to the language that shows that the authors really know what they are doing.&lt;P>So far, the book has done a great job covering all my industrial-strength perl questions with _examples that work_ and clear, concise explanations of the methods and the context. I find that the examples are really applicable to my professional needs as a contract perl programmer.&lt;P>There's a great section on object-oriented perl, as well as a good debugging section.&lt;P>IMHO, This is the best perl book out in a while.</Comment>
+         </CustomerReview>
+      </Reviews>
+      <SimilarProducts>
+         <Product>1861004389</Product>
+         <Product>1861003145</Product>
+         <Product>073571228X</Product>
+         <Product>0130351814</Product>
+         <Product>0672320673</Product>
+      </SimilarProducts>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/1881957322/webservices-20?dev-t=YOUR_AMZN_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>1881957322</Asin>
+      <ProductName>Macperl: Power and Ease</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>Vicki Brown</Author>
+      </Authors>
+      <ReleaseDate>01 April, 1998</ReleaseDate>
+      <Manufacturer>Prime Time Freeware</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/1881957322.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/1881957322.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/1881957322.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$40.00</ListPrice>
+      <OurPrice>$40.00</OurPrice>
+      <UsedPrice>$3.17</UsedPrice>
+      <SalesRank>46,487</SalesRank>
+      <Lists>
+         <ListId>27Q0AG701NM9Y</ListId>
+      </Lists>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Computer Bks - Apple / Macintosh</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computer Books And Software</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Hardware - Personal Computers - Macintosh</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Programming Languages - CGI, Javascript, Perl, VBScript</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Paperback</Media>
+      <NumMedia>1</NumMedia>
+      <Isbn>1881957322</Isbn>
+      <Availability>THIS TITLE IS CURRENTLY NOT AVAILABLE. If you would like to purchase this title, we recommend that you occasionally check this page to see if it has become available.</Availability>
+      <Reviews>
+         <AvgCustomerRating>3.62</AvgCustomerRating>
+         <TotalCustomerReviews>8</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>1</Rating>
+            <Summary>20 pages at the most</Summary>
+            <Comment>This book touches on several subjects without really explaining very many of them. Perhaps written by persons better able to write code than books, the syntax is overly loose and informal. The really useful data in this book would fit about 20 pages. The rest is teaser and fluff, the beginning of an idea without the essence. MacPerl is a wonderful, free tool for the Macintosh, but this book is not worth the price of admission.&lt;P>To sum it all up, its a hack job and a frustrating read.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>3</Rating>
+            <Summary>It needs work</Summary>
+            <Comment>I'm glad this book was written because I love the Mac OS and want to see Perl developed on it. However, this book is not easy to use. It's clear that the authors do know what they're talking about, but they're not great at conveying lessons to the reader. Some script examples can be confusing to walk through when the authors say stuff like "Let's add this line to the script we've been writing" without telling you where in the script to add it, or what to line to replace. It seems as if they're so excited about the subject of the book that they fail to stick to repetetive teaching conventions (which I personally find very helpful with programming books. I'm sure not everyone does. Call me dry.) I plan to finish this book, but I actually found my C++ books easier to read, and that can't be becuase C++ is easier. I think with some revision, this book could be a great staple for Perl programming on the Mac. Namely: Pick a lesson format and stick with it. Don't just wander through the features of Perl. Still glad they wrote it, though. Viva the Mac OS. If you're an absolute beginner, buy this book if you're prepared to re-read sections. If you're somewhat experienced, this book will probably prove quite useful to you.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>A superb way to learn Perl!</Summary>
+            <Comment>I first encountered this book first in electronic format on macperl.com, and used it to learn Perl with great success. In fact, I liked it so much that I actually ordered it!&lt;P>This is a superb book for learning programming. The approach to learning may be annoying for more experienced computer people, but for me it was just perfect. In under 2 months I have become extremely proficient in Perl programming. &lt;P>This book isn't merely good for Mac users either. A UNIX friend of mine gave up on "Learning Perl" from O'Reilly publishing, but he managed to learn Perl from this book! Kudos to Vicki Brown and Chris Nandor...and thanks for revamping the Slashcode, Chris!&lt;P>If you want to learn Perl, buy it!</Comment>
+         </CustomerReview>
+      </Reviews>
+      <SimilarProducts>
+         <Product>0596005571</Product>
+         <Product>0596006152</Product>
+         <Product>0596004605</Product>
+         <Product>0596005008</Product>
+      </SimilarProducts>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/1850322538/webservices-20?dev-t=YOUR_AMZN_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>1850322538</Asin>
+      <ProductName>The Webmaster's Handbook: Perl Power for Your Web Server</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>Christian Neuss</Author>
+         <Author>Johan Vromans</Author>
+      </Authors>
+      <ReleaseDate>01 February, 1996</ReleaseDate>
+      <Manufacturer>Itp New Media</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/1850322538.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/1850322538.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/1850322538.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$29.95</ListPrice>
+      <OurPrice>$29.95</OurPrice>
+      <UsedPrice>$9.00</UsedPrice>
+      <ThirdPartyNewPrice>$19.99</ThirdPartyNewPrice>
+      <SalesRank>603,391</SalesRank>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Computer Bks - Internet</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computer Books: General</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computer Networks</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Internet - General</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Paperback</Media>
+      <NumMedia>1</NumMedia>
+      <Isbn>1850322538</Isbn>
+      <Availability>Special Order</Availability>
+      <Reviews>
+         <AvgCustomerRating>5</AvgCustomerRating>
+         <TotalCustomerReviews>2</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>It's still the best if you want to get to know the basics</Summary>
+            <Comment>I can highly recommend this book if you are interested, how things really work on the Web. It explains all the basics that are still - after 6 years - fundamental to most static and dynamic Web sites. The examples are very useful in the daily business of a Web master. Only a few books on this topic present really helpful information in a compact and easy to read way - this book does!&lt;P>Many thanks to Christian and Johan :-)</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>It's amazing they put so much info in such a thin book!</Summary>
+            <Comment>It presents all and only the information needed to start a web site. It gives reader a transparent view on how web works, no added complication or subtracted information. Has elegant examples in Perl, covering most of the basic needs in web development, from form handling to log file analysis, even have a working example of shopping cart. Gives a concise descriptions of HTTP and HTML. I read the book from cover to cover over a weekend, while have practically no prior knowledge on CGI or Perl, and get a jump start on both. It seems that every word in the book is useful and helpful. It's bit "old" now, but still gives one a solid understanding of how web works. An excellent technical book.</Comment>
+         </CustomerReview>
+      </Reviews>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/0201360683/webservices-20?dev-t=YOUR_AMZN_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>0201360683</Asin>
+      <ProductName>Perl Power!: A JumpStart Guide to Programming with Perl 5</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>Michael Schilli</Author>
+      </Authors>
+      <ReleaseDate>16 December, 1998</ReleaseDate>
+      <Manufacturer>Addison-Wesley Professional</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/0201360683.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/0201360683.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/0201360683.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$39.99</ListPrice>
+      <OurPrice>$39.99</OurPrice>
+      <UsedPrice>$1.00</UsedPrice>
+      <ThirdPartyNewPrice>$9.41</ThirdPartyNewPrice>
+      <SalesRank>260,218</SalesRank>
+      <Lists>
+         <ListId>2J4E2VTVBUIYE</ListId>
+      </Lists>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Computer Bks - Languages / Programming</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computer Books And Software</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computers</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Object-Oriented Programming</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Perl (Computer program language)</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Professional - General</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Programming - General</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Programming - Object Oriented Programming</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Programming Languages - CGI, Javascript, Perl, VBScript</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Paperback</Media>
+      <NumMedia>1</NumMedia>
+      <Isbn>0201360683</Isbn>
+      <Availability>Out of Print--Limited Availability</Availability>
+      <Reviews>
+         <AvgCustomerRating>4.33</AvgCustomerRating>
+         <TotalCustomerReviews>6</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>4</Rating>
+            <Summary>Good introduction to Perl, and great reference</Summary>
+            <Comment>From its corny title you might expect another one of those sleazy introductions to Perl (I can name a few), but I can happily say that this book is an exception. The overview of the language is excellent and very comprehensible. Even after reading Learning Perl and Programming Perl, I picked up some valuable tips. The chapters on Object Oriented Programming and Perl/Tk are also good. For the Perl/CGI part, you might consider reading additional material, however. All in all, a surprisingly good introduction and reference to Perl 5, both for the beginner and the more advanced programmer.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>Perl power</Summary>
+            <Comment>Excellent book that gets you started with lots of areas of perl. Most of the code I have tried works fine with Activestates's 523 build and with the perl development kit 1.2.4. Having code that work is rare with these books especially with Windows. I use 98 and NT and unix. This book is not a diffinitive guide to perl but it gives you a good summay in most of the important area's and enought code to get started quickly. It gave me lots of ideas on things I could use perl for. I also like "Perl 5 complete" for theory, but the code for that book is very buggy and hard to get to work. I like its detailed explanation of how things are suppose to work. "Perl Cookbook" is also excellent for how to solve problems various kinds of problems. These are the best of the perl books I have.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>2</Rating>
+            <Summary>Don't buy this book for CGI programming</Summary>
+            <Comment>I bought this book based on the 5-star reviews - never do THAT again......long on abstract examples that don't mirror the real world, short on logical explanations for the common man(woman).. I have had several other PERL books from the local library that were much better (Castros book is good, don't believe the condescending reviews) - not for the CGI web programmer</Comment>
+         </CustomerReview>
+      </Reviews>
+      <SimilarProducts>
+         <Product>0130351814</Product>
+         <Product>0596000278</Product>
+      </SimilarProducts>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/0134393996/webservices-20?dev-t=YOUR_AMZN_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>0134393996</Asin>
+      <ProductName>Html 3.0 Cd With Javascript for the Mac and Power Mac</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>Vivian Neou</Author>
+         <Author>Mimi Recker</Author>
+      </Authors>
+      <ReleaseDate>01 June, 1996</ReleaseDate>
+      <Manufacturer>Prentice Hall</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/0134393996.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/0134393996.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/0134393996.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$44.95</ListPrice>
+      <OurPrice>$44.95</OurPrice>
+      <UsedPrice>$1.00</UsedPrice>
+      <CollectiblePrice>$11.44</CollectiblePrice>
+      <ThirdPartyNewPrice>$88.17</ThirdPartyNewPrice>
+      <SalesRank>504,397</SalesRank>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Computer Bks - Apple / Macintosh</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computer Books: General</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computer Networks</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computer Programming Languages</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computers</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>HTML (Document markup language)</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Internet - Web Site Design</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Java (Computer program language)</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Programming Languages - CGI, Javascript, Perl, VBScript</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Programming Languages - General</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Programming Languages - HTML</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Paperback</Media>
+      <NumMedia>1</NumMedia>
+      <Isbn>0134393996</Isbn>
+      <Availability>Out of Print--Limited Availability</Availability>
+      <Reviews>
+         <AvgCustomerRating>4</AvgCustomerRating>
+         <TotalCustomerReviews>1</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>4</Rating>
+            <Summary>Very good book!</Summary>
+            <Comment>I have read it several times, very good!</Comment>
+         </CustomerReview>
+      </Reviews>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/0789706598/webservices-20?dev-t=YOUR_AMZN_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>0789706598</Asin>
+      <ProductName>Special Edition Using Perl 5 for Web Programming</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>David Harlan</Author>
+         <Author>Micheal O Foghlu</Author>
+         <Author>Paul Doyle</Author>
+         <Author>Shelley Powers</Author>
+         <Author>Matthew D. Healy</Author>
+      </Authors>
+      <ReleaseDate>01 September, 1996</ReleaseDate>
+      <Manufacturer>Que</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/0789706598.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/0789706598.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/0789706598.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$49.99</ListPrice>
+      <OurPrice>$49.99</OurPrice>
+      <UsedPrice>$1.90</UsedPrice>
+      <CollectiblePrice>$27.50</CollectiblePrice>
+      <ThirdPartyNewPrice>$4.71</ThirdPartyNewPrice>
+      <SalesRank>208,614</SalesRank>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Computer Bks - Languages / Programming</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computer Books: Languages</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Programming - General</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Programming Languages - General</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Paperback</Media>
+      <NumMedia>1</NumMedia>
+      <Isbn>0789706598</Isbn>
+      <Availability>Out of Print--Limited Availability</Availability>
+      <Reviews>
+         <AvgCustomerRating>3.5</AvgCustomerRating>
+         <TotalCustomerReviews>8</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>3</Rating>
+            <Summary>Rushed into hardcopy</Summary>
+            <Comment>QUE must have pushed this book into print. As other reviewers have noted, one has to have dogged determination and stamina to digest this book. It presents a confusing, unrelated and diverse array of "my pet way do it" by several authors. The examples on the CD are pathetic - all lumped into one directory, no readme file(s), incomplete and therefore not runnable as-is. Example: to extract the files related to Ch 9 required sifting through the entire chapter, and then register.htm and its CGI backend were conspicuously missing. However, after bludgeoning my way through most of the book, I have extracted a small number of gems that are actually useful in real-life projects. The CD contains this whole book plus two others in HTML format. A nice idea, but each one is disorganized by a totally different team of people. There is no unified 'look-n-feel' and navigation is painful in all three books. Good as a reference, shop for it 2nd hand (and pay only what it is worth).</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>Very good if you want to make websites using Perl/CGI</Summary>
+            <Comment>I've read at least 6 books on perl, but if you want to specifically learn perl for websites, then this book is very good. It talks about databases (DBMs and SQL). Managing sessions and validating users, and it also talks about creating a shopping cart system. There is a chapter on CGI sercurity. Although the book was written in 1996 its a very good step in the right direction of making good, reliable CGI applications. In fact, compared to other CGI books printed in 96, this book is years ahead of them.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>4</Rating>
+            <Summary>Be patient, and it'll pay off</Summary>
+            <Comment>When I bought this book, I had absolutely no serious programming background. I was pretty accomplished in HTML, but nothing advanced. At first, the book was a bit hard. But the technique that I found helpful is to re-read each section (or each topic). I haven't even looked on the CD yet, and I'm learning loads about Perl. Also, reading this book really helps one understand some more advanced Perl tutorials on the web. It doesn't get 5 stars though, because the reader has to really be committed. This isn't a light read: get in the thinking mood when you read it.</Comment>
+         </CustomerReview>
+      </Reviews>
+   </Details>
+</ProductInfo>

Added: packages/libnet-amazon-perl/branches/upstream/current/t/canned/locale.xml
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/t/canned/locale.xml	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/t/canned/locale.xml	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?><ProductInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xml.amazon.com/schemas3/dev-heavy.xsd">
+
+<Request><Args><Arg value="libwww-perl/5.76" name="UserAgent"></Arg><Arg value="1MJHHX5ESW823C8R64QQ" name="RequestID"></Arg><Arg value="3827313783" name="AsinSearch"></Arg><Arg value="de" name="locale"></Arg><Arg value="1" name="page"></Arg><Arg value="YOUR_AMZN_TOKEN" name="dev-t"></Arg><Arg value="webservices-20" name="t"></Arg><Arg value="xml" name="f"></Arg><Arg value="books" name="mode"></Arg><Arg value="heavy" name="type"></Arg><Arg value="+salesrank" name="sort"></Arg></Args></Request>   <Details url="http://www.amazon.de/exec/obidos/ASIN/3827313783/webservices-20?dev-t=YOUR_AMZN_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>3827313783</Asin>
+      <ProductName>Go To Perl 5 .</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>Michael Schilli</Author>
+      </Authors>
+      <ReleaseDate>15. Juni 1998</ReleaseDate>
+      <Manufacturer>Addison-Wesley</Manufacturer>
+      <ImageUrlSmall>http://images-eu.amazon.com/images/P/3827313783.03.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images-eu.amazon.com/images/P/3827313783.03.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images-eu.amazon.com/images/P/3827313783.03.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>EUR 32,66</ListPrice>
+      <OurPrice>EUR 34,95</OurPrice>
+      <UsedPrice>EUR 10,00</UsedPrice>
+      <ThirdPartyNewPrice>EUR 34,95</ThirdPartyNewPrice>
+      <SalesRank>49.850</SalesRank>
+      <Lists>
+         <ListId>AZ30P8S2SVXI</ListId>
+      </Lists>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseId>1201700</BrowseId>
+            <BrowseName>Kategorien - Computer &amp; Internet - Programmierung - Programmiersprachen - Perl - Alle Bücher</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseId>1201708</BrowseId>
+            <BrowseName>Kategorien - Computer &amp; Internet - Programmierung - Programmiersprachen - Perl - Für Programmierer</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseId>502640</BrowseId>
+            <BrowseName>Kategorien - Computer &amp; Internet - Überblick</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseId>655740</BrowseId>
+            <BrowseName>Kategorien - Fachbücher - Informatik - Praktische Informatik - Programmiersprachen &amp; Interpreter</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Gebundene Ausgabe</Media>
+      <Isbn>3827313783</Isbn>
+      <Availability>F&amp;uuml;hren wir nicht oder nicht mehr - jetzt gebraucht vorbestellen.</Availability>
+      <Reviews>
+         <AvgCustomerRating>2.95</AvgCustomerRating>
+         <TotalCustomerReviews>19</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>sehr gutes Perl-Buch!</Summary>
+            <Comment>Michael Schilli, der vielen Lesern des Linux-Magazins durch seine monatlichen Kolumnen bekannt ist, hat ein hervorragendes Buch für den Einstieg in Perl geschrieben.&lt;P>Schilli hat sein Buch in 5 Abschnitte gegliedert. Im ersten Abschnitt, der Einführung in Perl, werden die Grundlagen der Skriptsprache erklärt. Anhand vieler Beispiele tasten sich die Leser dann bereits an File-Handling und Reguläre Ausdrücke heran. Bereits der zweite Abschnitt des Buches widmet sich der objekt-orientierten Programmierung, d.h. man lernt ziemlich schnell, wie man komplexere Programme in Angriff nehmen kann. Daran anschliessend widmet sich ein Abschnitt dem Einbinden von Modulen in eigene Programme. Für alle die, die ihre Programme mit einer schmucken GUI (Graphical User Interface) versehen wollen, sollte der Abschnitt "Graphische Oberflächen mit Tk" das Herz höher schlagen lassen. Hier wird erklärt, wie man mit dem Tk-Paket eigene graphische Frontends für seine Programme entwickeln kann. Der letzte Abschnitt des Buches widmet sich der Perl-Programmierung im Internet. Hier wird anhand vieler Beispiele gezeigt, wie man beispielsweise Daten von Websites automatisch per Perl extrahieren und in eigene Seiten einbinden kann. &lt;P>Das Buch verfügt weiterhin über einen großen Appendix-Teil, in dem erklärt wird, wie Perl zu installieren ist, wie man Scripts startet und Fehler findet. Auf der beiliegenden CD sind neben den zahlreichen Beispielen auch eine aktuelle Perl-Distribution sowie der Apache Webserver enthalten.&lt;P>Fazit: Dieses Buch ist sehr empfehlenswert. &lt;font size="-1" face="geneva, arial, helvetica">(Dies ist eine &lt;b>Amazon.de an der Uni&lt;/b>-Studentenrezension.)&lt;/font></Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>Excellentes Buch auch für Fortgeschrittene</Summary>
+            <Comment>Nach langer Überlegung, denn Computerbücher sind meist teuer, habe ich mich doch für dieses Buch entschieden, weil es sehr umfassend auf verschiedenste Anwendungsbereiche von Perl eingeht. Es vergeht keine Seite ohne Beispiele, die man Dank der CD-ROM aber nicht mal mehr abtippen muß und alles ist "idiotensicher" beschrieben. Was mich nur ein wenig stört ist, daß fast nur die Arbeit mit Modulen beschrieben wird, obwohl sich manche Probleme mit etwas Umstand viel systemnaher und somit erheblich schneller, als es mit den Modulen möglich wäre, lösen lassen, denn Module sind öfters etwas träge oder klobig und manchmal auch fehlerhaft.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>2</Rating>
+            <Summary>Verwirrend!</Summary>
+            <Comment>Mit der Aussage, daß es DAS Buch für Einsteiger und Fortgeschrittene sei, hat der Autor mein Interesse geweckt. Einstieg und Fortschritt in einem Buch, das hörte sich gut an. Außerdem hat mich zusätzlich die graphische Programmierung interessiert. Nachdem ich mich durch das erste Kapitel gearbeitet hatte, entstand in meinem Kopf ein wirrer Wust an Informationen, die ich irgendwie nicht ordnen konnte, geschweige denn sinnvoll anwenden konnte. Verzweifelt und vor allem enttäuscht hielt ich Ausschau nach einem neuen Buch und fand mit Perl 5 für Dummies genau das, was ich von Go to Perl 5 erwartet hatte. Alle Probleme und Fragen die sich bei mir mit GtP5 innerhalb einiger Stunden ergeben haben, hat das Buch innerhalb einer halben Stunde, ohne groß zu suchen, gelöst. Meiner Meinung nach ist GtP5 keinesfalls für den Einsteiger geeignet. An allen Enden und Ecken fehlen Syntaxbeschreibungen, die man sich erst mühselig aus der englischen Perl-Hilfe raussuchen muß. Vielleicht werde ich als Fortgeschrittener wieder auf das Buch zurückgreifen können. Jetzt verstaubt es leider bei mir im Zimmer. Für mich keinesfalls sein (teures) Geld wert.</Comment>
+         </CustomerReview>
+      </Reviews>
+   </Details>
+</ProductInfo>

Added: packages/libnet-amazon-perl/branches/upstream/current/t/canned/manufacturer.xml
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/t/canned/manufacturer.xml	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/t/canned/manufacturer.xml	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="UTF-8"?><ProductInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xml.amazon.com/schemas3/dev-lite.xsd">
+
+<Request><Args><Arg value="Wget/1.5.3" name="UserAgent"></Arg><Arg value="1J9SJ9BDQAH0BTPZ474V" name="RequestID"></Arg><Arg value="us" name="locale"></Arg><Arg value="9" name="page"></Arg><Arg value="YOUR_TOKEN_HERE" name="dev-t"></Arg><Arg value="webservices-20" name="t"></Arg><Arg value="xml" name="f"></Arg><Arg value="books" name="mode"></Arg><Arg value="lite" name="type"></Arg><Arg value="Black Belt Communications, Inc." name="ManufacturerSearch"></Arg></Args></Request>   <TotalResults>92</TotalResults>
+   <TotalPages>1</TotalPages>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/0897501012/webservices-20?dev-t=YOUR_TOKEN_HERE%26camp=2025%26link_code=xm2">
+      <Asin>0897501012</Asin>
+      <ProductName>Kama: Karate Weapon of Self-Defense</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>Fumio Demura</Author>
+         <Author>Mike Lee</Author>
+      </Authors>
+      <ReleaseDate>September, 1984</ReleaseDate>
+      <Manufacturer>Black Belt Communications, Inc.</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/0897501012.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/0897501012.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/0897501012.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <Availability>Out of Print--Limited Availability</Availability>
+      <ListPrice>$8.95</ListPrice>
+      <OurPrice>$8.95</OurPrice>
+      <UsedPrice>$138.81</UsedPrice>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/0897501152/webservices-20?dev-t=YOUR_TOKEN_HERE%26camp=2025%26link_code=xm2">
+      <Asin>0897501152</Asin>
+      <ProductName>High Intensity Weight Training for the Martial Artist</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>Manuel Silverio</Author>
+         <Author>Manuel Siverio</Author>
+         <Author>Mike Lee</Author>
+         <Author>Harry Banks</Author>
+      </Authors>
+      <ReleaseDate>June, 1988</ReleaseDate>
+      <Manufacturer>Black Belt Communications, Inc.</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/0897501152.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/0897501152.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/0897501152.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <Availability>Out of Print--Limited Availability</Availability>
+      <ListPrice>$12.95</ListPrice>
+      <OurPrice>$12.95</OurPrice>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/0897501276/webservices-20?dev-t=YOUR_TOKEN_HERE%26camp=2025%26link_code=xm2">
+      <Asin>0897501276</Asin>
+      <ProductName>Elements of Advanced Karate/No. 440</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>Lester Ingber</Author>
+      </Authors>
+      <ReleaseDate>June, 1985</ReleaseDate>
+      <Manufacturer>Black Belt Communications, Inc.</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/0897501276.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/0897501276.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/0897501276.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <Availability>Out of Print--Limited Availability</Availability>
+      <ListPrice>$11.95</ListPrice>
+      <OurPrice>$11.95</OurPrice>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/0897500644/webservices-20?dev-t=YOUR_TOKEN_HERE%26camp=2025%26link_code=xm2">
+      <Asin>0897500644</Asin>
+      <ProductName>Technique and Form of the Three Sectional Staff in Kung Fu</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>Kam Yuen</Author>
+      </Authors>
+      <ReleaseDate>December, 1979</ReleaseDate>
+      <Manufacturer>Black Belt Communications, Inc.</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/0897500644.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/0897500644.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/0897500644.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <Availability>Out of Print--Limited Availability</Availability>
+      <ListPrice>$7.95</ListPrice>
+      <OurPrice>$7.95</OurPrice>
+      <UsedPrice>$19.95</UsedPrice>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/0897500466/webservices-20?dev-t=YOUR_TOKEN_HERE%26camp=2025%26link_code=xm2">
+      <Asin>0897500466</Asin>
+      <ProductName>Path to Oriental Wisdom: Introductory Studies in Eastern Philosophy</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>George, Jr. Parulski</Author>
+      </Authors>
+      <ReleaseDate>December, 1995</ReleaseDate>
+      <Manufacturer>Black Belt Communications, Inc.</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/0897500466.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/0897500466.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/0897500466.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <Availability>Out of Print--Limited Availability</Availability>
+      <ListPrice>$16.95</ListPrice>
+      <OurPrice>$16.95</OurPrice>
+      <UsedPrice>$6.35</UsedPrice>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/0897500326/webservices-20?dev-t=YOUR_TOKEN_HERE%26camp=2025%26link_code=xm2">
+      <Asin>0897500326</Asin>
+      <ProductName>Sil Lum Kung Fu: The Chinese Art of Self Defense</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>Leo T. Fong</Author>
+      </Authors>
+      <ReleaseDate>June, 1971</ReleaseDate>
+      <Manufacturer>Black Belt Communications, Inc.</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/0897500326.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/0897500326.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/0897500326.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <Availability>Out of Print--Limited Availability</Availability>
+      <ListPrice>$8.95</ListPrice>
+      <OurPrice>$8.95</OurPrice>
+      <UsedPrice>$4.99</UsedPrice>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/0897500423/webservices-20?dev-t=YOUR_TOKEN_HERE%26camp=2025%26link_code=xm2">
+      <Asin>0897500423</Asin>
+      <ProductName>Beginning Kung-Fu</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>Kam Yuen</Author>
+      </Authors>
+      <ReleaseDate>June, 1975</ReleaseDate>
+      <Manufacturer>Black Belt Communications, Inc.</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/0897500423.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/0897500423.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/0897500423.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <Availability>Out of Print--Limited Availability</Availability>
+      <ListPrice>$10.95</ListPrice>
+      <OurPrice>$10.95</OurPrice>
+      <UsedPrice>$4.75</UsedPrice>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/0897500784/webservices-20?dev-t=YOUR_TOKEN_HERE%26camp=2025%26link_code=xm2">
+      <Asin>0897500784</Asin>
+      <ProductName>Basic Training for Kicking</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>Pugill Gwon</Author>
+      </Authors>
+      <ReleaseDate>December, 1981</ReleaseDate>
+      <Manufacturer>Black Belt Communications, Inc.</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/0897500784.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/0897500784.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/0897500784.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <Availability>Out of Print--Limited Availability</Availability>
+      <ListPrice>$9.50</ListPrice>
+      <OurPrice>$9.50</OurPrice>
+      <UsedPrice>$4.49</UsedPrice>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/0897500830/webservices-20?dev-t=YOUR_TOKEN_HERE%26camp=2025%26link_code=xm2">
+      <Asin>0897500830</Asin>
+      <ProductName>Kicks for Competition</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>Chong Lee</Author>
+      </Authors>
+      <ReleaseDate>March, 1989</ReleaseDate>
+      <Manufacturer>Black Belt Communications, Inc.</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/0897500830.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/0897500830.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/0897500830.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <Availability>Out of Print--Limited Availability</Availability>
+      <ListPrice>$9.50</ListPrice>
+      <OurPrice>$9.50</OurPrice>
+      <UsedPrice>$5.00</UsedPrice>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/0897500911/webservices-20?dev-t=YOUR_TOKEN_HERE%26camp=2025%26link_code=xm2">
+      <Asin>0897500911</Asin>
+      <ProductName>American Law and the Trained Fighter</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>Carl Brown</Author>
+         <Author>Todd Henschell</Author>
+      </Authors>
+      <ReleaseDate>March, 1989</ReleaseDate>
+      <Manufacturer>Black Belt Communications, Inc.</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/0897500911.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/0897500911.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/0897500911.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <Availability>Out of Print--Limited Availability</Availability>
+      <ListPrice>$7.95</ListPrice>
+      <OurPrice>$7.95</OurPrice>
+      <UsedPrice>$4.50</UsedPrice>
+   </Details>
+</ProductInfo>

Added: packages/libnet-amazon-perl/branches/upstream/current/t/canned/power.xml
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/t/canned/power.xml	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/t/canned/power.xml	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="UTF-8"?><ProductInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xml.amazon.com/schemas2/dev-heavy.xsd">
+
+   <TotalResults>2</TotalResults>
+   <TotalPages>1</TotalPages>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/0596004788/webservices-20?dev-t=YOUR_AMZN_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>0596004788</Asin>
+      <ProductName>Learning Perl Objects, References and Modules</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>Tom Phoenix</Author>
+         <Author>Randal L. Schwartz</Author>
+         <Author>Damian Conway</Author>
+      </Authors>
+      <ReleaseDate>June, 2003</ReleaseDate>
+      <Manufacturer>O'Reilly &amp; Associates</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/0596004788.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/0596004788.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/0596004788.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$34.95</ListPrice>
+      <OurPrice>$24.47</OurPrice>
+      <UsedPrice>$23.50</UsedPrice>
+      <ThirdPartyNewPrice>$21.05</ThirdPartyNewPrice>
+      <SalesRank>5,680</SalesRank>
+      <Lists>
+         <ListId>1BIH9M0YMNUFG</ListId>
+         <ListId>2ECDFGNWHAGNL</ListId>
+      </Lists>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Computer Books: Languages</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computer Bks - Languages / Programming</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computers</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Programming Languages - CGI, Javascript, Perl, VBScript</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Programming - General</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Paperback</Media>
+      <NumMedia>1</NumMedia>
+      <Isbn>0596004788</Isbn>
+      <Availability>Usually ships within 24 hours</Availability>
+      <Reviews>
+         <AvgCustomerRating>4.75</AvgCustomerRating>
+         <TotalCustomerReviews>4</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>4</Rating>
+            <Summary>Good for intermediate perl programmers</Summary>
+            <Comment>To me, this book seemed like two books:&lt;P>1) Shared Libraries, References, Data Structures, Scoping, and other things in perl. -- For internmediate programmers.&lt;P>2) OO Perl, Distributions, and Testing in Perl - Step-by-Step - For advnaced perl programmers who aspire to be wizards.&lt;P>For me, part 1 was mostly review. Part 2 is good schtuff, but it's not very deep. You could call it "a gentle introduction to OO"&lt;P>My conclusion: The earlier in your career you read this book, the better. If the topics in #1 or #2 are "new" to you, go buy the book. Seriously. The comments on h2xs and the design patterns that schwartz sets up -alone- make it worth the price.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>perl book you should/must get</Summary>
+            <Comment>perl must-have's: &lt;P>- camel, &lt;BR>- Hall/Schwartz: effective &lt;BR>- Friedl: Reg Ex&lt;P>Should-have:&lt;P>- Conway OO Perl (all 4 Manning perl titles are superb)&lt;BR>- Brown debuggin perl OR scott/wright Perl debugged&lt;BR>- Learning Python &amp; Ruby pickax (so you know what's out there)&lt;P>I'm not sure which list this fits on, but it'll save you a huge amount of time learning 3 topics over deciphering camel or Perl in Nutshell. Conway ties for best OO intro ever (w/Booch, of ~8 books I've looked at) This book is more of a survey of OO, data structs &amp; mods in familiar llama style: Hand-holding at first, then they accelerate &amp; things get dense pretty quick. Just enough example code to illustrate, there's no big app that gets worked up thru the book. So if you wanna master perl obj model, and approach problems w/tools like java, scheme, &amp; (ahem) python/ruby developers have, get both books.&lt;P>And ask OReilly to put this on the next update of PERL CD bookshelf.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>A Fabulous Sequel to 'Learning Perl'</Summary>
+            <Comment>Merlyn (as Randal Schwartz is known in Perl circles) is a fantastic author, and has written some of the most influential books on Perl available. For this book, he teamed up with his buddy and co-worker Tom Phoenix, who is another Perl luminary.&lt;P>Picking up where they left off with their book 'Learning Perl' Randal and Tom plunge ahead into more advanced topics in Perl, giving you the reader in-depth knowledge in how to take Perl from small projects into large.&lt;P>The writing is humorous, and easy to read, the examples are top-notch, and the knowledge is spot on.&lt;P>If you're already familiar with Perl, and you're looking to take the next step forward, this is the book for you.&lt;P>Kudos to the authors.</Comment>
+         </CustomerReview>
+      </Reviews>
+      <SimilarProducts>
+         <Product>0596004990</Product>
+      </SimilarProducts>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/0596001320/webservices-20?dev-t=YOUR_AMZN_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>0596001320</Asin>
+      <ProductName>Learning Perl, Third Edition</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>Randal L. Schwartz</Author>
+         <Author>Tom Phoenix</Author>
+      </Authors>
+      <ReleaseDate>15 July, 2001</ReleaseDate>
+      <Manufacturer>O'Reilly &amp; Associates</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/0596001320.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/0596001320.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/0596001320.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$34.95</ListPrice>
+      <OurPrice>$24.47</OurPrice>
+      <UsedPrice>$18.00</UsedPrice>
+      <ThirdPartyNewPrice>$20.93</ThirdPartyNewPrice>
+      <SalesRank>1,414</SalesRank>
+      <Lists>
+         <ListId>1T2AN3P86O3Z6</ListId>
+         <ListId>1FBT3UDCUUA5D</ListId>
+         <ListId>1T0Q8K3MF744H</ListId>
+      </Lists>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Perl (Computer program languag</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Perl (Computer language)</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computer Bks - Languages / Programming</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computers</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Programming Languages - CGI, Javascript, Perl, VBScript</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Paperback</Media>
+      <NumMedia>1</NumMedia>
+      <Isbn>0596001320</Isbn>
+      <Availability>Usually ships within 24 hours</Availability>
+      <Reviews>
+         <AvgCustomerRating>4.21</AvgCustomerRating>
+         <TotalCustomerReviews>226</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>4</Rating>
+            <Summary>Buy the camel, but read the llama first</Summary>
+            <Comment>Excellent.&lt;P> I came to this book knowing next to nothing about Perl, and with a few misconceptions to boot (that Perl's syntax is 'write-only', it's primarily a CGI tool, etc.), and now I am not sure that epiphany would cover it. In 12 years of learning and using programming languages, I don't think I have come across anything so enchanting.&lt;P>One of the best parts of the book: the authors. Add Schwartz &amp; Christiansen to Elliotte Rusty Harold, Petzold, and a very few others who are truly effective technical writers. Classic O'Reilly easygoing style, never condescending, and eerily consistent in presenting just the right amount of information on the given topic.&lt;P>Every programmer (even non-Perl ones) should read 'Programming Perl' by Larry Wall. But to learn Perl, and take the first step down a long and magical road, buy this book.&lt;P>I had a few nits, but by the time I finished the book, I had forgotten most of them. As close to 5 stars as I will ever give for a technical book.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>4</Rating>
+            <Summary>THE perl tutorial</Summary>
+            <Comment>I've been through this book several times. I went through the 2nd edition on my own a couple of years ago when I learned perl. I have since (after a year of hiatus from perl) been through the 3rd edition in a classroom setting. The 3rd edition is much improved in terms of structure and pace. For example, explanation of regular expressions (one of the most powerful features of perl) is expanded into three chapters. On the down side, I would have liked to see a chapter or two covering references and OOP.&lt;BR> The authors are clearly expert coders and have an intimate knowledge of perl. The prose is clear and deliberate, over-simplifying when helpful, but being sure to point you to the details in footnotes. The book is also laced with wry humor that both makes the dryness of such a topic more palatable and serves as an introduction to the quirkiness of "perl culture" in general.&lt;BR> If you are a beginner in Perl, and have some programming experience in another language, this is the one to get. Not a great reference, but a great tutorial.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>3</Rating>
+            <Summary>Good Book, Bad Revision</Summary>
+            <Comment>I gave the 2nd edition of this book 5 stars for its readability and concise coverage of the Perl basics. Unfortunately, the 3rd edition adds very little and takes away many of the best parts of the 2nd edition. The chapter on report formatting was completely removed in this edition. I guess we will have to call it Pel instead of Perl. (The "r" in the name stands for "reporting," but reporting is no longer covered at all in this book).&lt;P>The second edition also had an excellent chapter on CGI programming with Perl. This was also sent to the dumpster. Another casualty was chapter one which previously contained a well crafted introduction to the language called a "stroll through Perl." It has been replaced by a boring and traditional introduction chapter. &lt;P>So, what were the additions that warranted the creation of a new edition in the first place? The chapter on regular expressions was spilt into three chapters. A good idea, but the coverage is almost identical to that of the previous edition. A little more explanation is added in various chapters here and there, which is good. But, this edition also contains many more footnotes, which is bad! The authors seem obsessed with footnoting the most obscure and bizarre details in footnotes, and there are footnotes on almost every page. (Of course you don't have to read them, but like looking at a bad car accident, I just can't resist). &lt;P>This is still a good tutorial on Perl, but the second edition is so much better I would recommend buying it instead of the third edition. Unfortunately, newer does not always mean better.</Comment>
+         </CustomerReview>
+      </Reviews>
+      <SimilarProducts>
+         <Product>0596000278</Product>
+         <Product>1565922433</Product>
+         <Product>1565924193</Product>
+         <Product>0596002890</Product>
+         <Product>1565922204</Product>
+      </SimilarProducts>
+   </Details>
+</ProductInfo>

Added: packages/libnet-amazon-perl/branches/upstream/current/t/canned/power_empty.xml
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/t/canned/power_empty.xml	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/t/canned/power_empty.xml	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ProductInfo><Request><Args><Arg value="libwww-perl/5.76" name="UserAgent"></Arg><Arg value="02R8H37GPR22CBYNZ2YH" name="RequestID"></Arg><Arg value="author: randal schwartz and author: mike schilli" name="PowerSearch"></Arg><Arg value="us" name="locale"></Arg><Arg value="1" name="page"></Arg><Arg value="YOUR_AMZN_TOKEN" name="dev-t"></Arg><Arg value="webservices-20" name="t"></Arg><Arg value="xml" name="f"></Arg><Arg value="books" name="mode"></Arg><Arg value="heavy" name="type"></Arg><Arg value="+salesrank" name="sort"></Arg></Args></Request><ErrorMsg>There are no exact matches for the search.</ErrorMsg></ProductInfo>

Added: packages/libnet-amazon-perl/branches/upstream/current/t/canned/power_sorted.xml
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/t/canned/power_sorted.xml	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/t/canned/power_sorted.xml	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,407 @@
+<?xml version="1.0" encoding="UTF-8"?><ProductInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xml.amazon.com/schemas3/dev-heavy.xsd">
+
+<Request><Args><Arg value="libwww-perl/5.76" name="UserAgent"></Arg><Arg value="19SG51K23T50ZFJYJZ78" name="RequestID"></Arg><Arg value="subject: perl and author: schwartz" name="PowerSearch"></Arg><Arg value="us" name="locale"></Arg><Arg value="1" name="page"></Arg><Arg value="MY_AMAZON_TOKEN" name="dev-t"></Arg><Arg value="webservices-20" name="t"></Arg><Arg value="xml" name="f"></Arg><Arg value="books" name="mode"></Arg><Arg value="heavy" name="type"></Arg><Arg value="+pricerank" name="sort"></Arg></Args></Request>   <TotalResults>6</TotalResults>
+   <TotalPages>1</TotalPages>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B00005R09A/webservices-20?dev-t=MY_AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>B00005R09A</Asin>
+      <ProductName>Learning Perl (2nd Edition)</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>Randal L. Schwartz</Author>
+         <Author>Tom Christiansen</Author>
+         <Author>Larry Wall</Author>
+      </Authors>
+      <ReleaseDate>July, 1997</ReleaseDate>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B00005R09A.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B00005R09A.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B00005R09A.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$29.95</ListPrice>
+      <OurPrice>$14.99</OurPrice>
+      <UsedPrice>$9.00</UsedPrice>
+      <SalesRank>428,814</SalesRank>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Perl (Computer program languag</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Perl (Computer language)</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computer Programming Languages</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Unix (Operating System)</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computer Bks - Languages / Programming</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computers</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Programming Languages - CGI, Javascript, Perl, VBScript</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Bargain</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Paperback</Media>
+      <NumMedia>1</NumMedia>
+      <Isbn>B00005R09A</Isbn>
+      <Availability>THIS TITLE IS CURRENTLY NOT AVAILABLE. If you would like to purchase this title, we recommend that you occasionally check this page to see if it has become available.</Availability>
+      <ProductDescription>In this smooth, carefully paced course, a leading Perl trainer  teaches you to program in the language that threatens to make C, sed, awk, and the Unix shell obsolete for many tasks.  This book is the "official" guide for both formal (classroom) and informal learning.  It is fully  accessible to the novice programmer.</ProductDescription>
+      <Reviews>
+         <AvgCustomerRating>4.2</AvgCustomerRating>
+         <TotalCustomerReviews>233</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>From a programming novice, this book is an outstanding tool</Summary>
+            <Comment>As a non-programmer, I purchased this book to assist me in my duties as a systems administrator. After reading the book cover-to-cover (reading some chapters twice, to make up for my lack of programming experience), I was able to gain a solid understanding of the Perl programming language. Though this book will not make you an expert on the subject, it will give you enough knowledge to begin using Perl for many tasks, and can be a stepping stone to more advanced Perl books (such as O'Reilly's 'Learning Perl', considered by many to be the unofficial bible of the language). For non-programmers like myself, this book is an outstanding learning tool; within a matter of just a few weeks, this book can help you become well-versed in the basics of Perl.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>4</Rating>
+            <Summary>Not straightforward, but contains valuble information</Summary>
+            <Comment>While this book isn't quite as comprihensive as 'Programming Perl' by Larry Wall, it still assumes basic knowledge of procedural programming. I bought this book after one semester of C++, and shortly thereafter, I was rewriting that semester's work in Perl. Also, the 'Regular Expressions' Chapter does make several refrences to grep and sed, which seems to irritate some non-UNIX savvy reviewers. I have no real knowledge of UNIX shell scripting, but I was able to understand the sections in the book which make heavy reference to it, those references may just make it easier for UNIX programmers to undestand; it's hardly an impediment to anyone else.&lt;P>Overall, the book is not easy reading, but if you got an 'A' in your introductory C/C++ class, this book should not be a problem. One common thing I've noticed about programming books on amazon is that, either reviewers praise or bash a particular book, so make sure you 'get' programming before spending $50 on a non-introductory book like this one.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>2</Rating>
+            <Summary>Overrated because there are no competing books</Summary>
+            <Comment>I've think I've owned every edition of this book and each time I return it after unsuccessfully trying to get anything useful out of it. Lately I've wanted to really get scripting under my hands to expand my skills as a sysadmin. So I bought this book again (erroneously thinking I'd not tried hard enough the first 2-3 times I used this book to try and learn Perl). While I'm no developer, I'm no stranger to the concepts of coding. I wouldn't exactly call myself a beginner. Nevertheless, this book seems bent on confusing the reader by introducing concept after concept with absolutely no hands on application of the material covered. How exactly are you going to remember all the ways you can list the contents of an arrray without some practical examples?&lt;P>Reading this book this time (and hopefully for the last time), I keep getting the feeling that these authors wrote the book to appease Perl gurus, not to help people who are new to Perl and who are not senior developers in other programming languages. The constant bombardment of superfluous footnotes also serves to distract the frustrated Perl student from learning the language in any useful fashion. And what gives with the first exercise in the book (!) being about finding the circumference of a circle and the square root of such-and-such? Sadly I never took those math courses, does that mean I can't learn Perl? Or does it just mean that the authors assume all who read this book are math wizzes with years of programming experience?&lt;P>I noticed another reviewer said that this book is not a reference. I do agree him that a book about learning Perl shouldn't be a reference. But I have to say that this book reads like a reference book....too many concepts thrown in the Perl student's lap without showing him/her at least a couple ways in which the concept(s) might be used.&lt;P>My opinion is the book is probably good for advanced programmers who want a quick-and-dirty overview of Perl. But to be truly useful (and to live up to the name "learning perl" not "learning perl for math geeks and programming gurus") the book should be bigger, allowing for useful examples that the less-experienced student can run that teach how to actually use these concepts.</Comment>
+         </CustomerReview>
+      </Reviews>
+      <SimilarProducts>
+         <Product>0596000278</Product>
+         <Product>0596003137</Product>
+         <Product>1565924193</Product>
+         <Product>0596002890</Product>
+         <Product>0596003749</Product>
+      </SimilarProducts>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B00007FYAG/webservices-20?dev-t=MY_AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>B00007FYAG</Asin>
+      <ProductName>Learning Perl on Win32 Systems</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>Randal L. Schwartz</Author>
+         <Author>Tom Christiansen</Author>
+         <Author>Erik W. Olson</Author>
+         <Author>Erik Olsen</Author>
+      </Authors>
+      <ReleaseDate>August, 1997</ReleaseDate>
+      <Manufacturer>O'Reilly &amp; Associates</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B00007FYAG.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B00007FYAG.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B00007FYAG.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$29.95</ListPrice>
+      <OurPrice>$14.99</OurPrice>
+      <SalesRank>1,250,377</SalesRank>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Perl (Computer program languag</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Microsoft Win32</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computer Programming Languages</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computer Bks - Languages / Programming</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computers</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Operating Systems - Windows</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Programming Languages - General</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Bargain</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Paperback</Media>
+      <NumMedia>1</NumMedia>
+      <Features>
+         <Feature>Bargain Price</Feature>
+      </Features>
+      <Isbn>B00007FYAG</Isbn>
+      <Availability>THIS TITLE IS CURRENTLY NOT AVAILABLE. If you would like to purchase this title, we recommend that you occasionally check this page to see if it has become available.</Availability>
+      <Reviews>
+         <AvgCustomerRating>3.48</AvgCustomerRating>
+         <TotalCustomerReviews>29</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>3</Rating>
+            <Summary>Shallow, but a Helpful Intro to Perl for Win32 People</Summary>
+            <Comment>I concur with the bulk of the reviews here: This is a shallow book, especially given Perl's scope. But it WILL help Windows folks understand many of the key Perl concepts that otherwise go unmentioned.&lt;P>And that's the major point here. The book may be a trivial intro to Perl, but at least it doesn't assume you're a *NIX weenie. After getting annoyed reading the 3rd edition of the camel book, I bought this book. It was helpful in clearing up all those references to the weird stuff that *NIX dudes apparently are born knowning, and got me quickly into writing simple Perl scripts.&lt;P>You want heavy details of the Win32 or NT-specific functions? Go read the POD embedded in those modules. Or get a different book.&lt;P>This is "LEARNING Perl on Win32 Systems"... I read it in about 6 hours, total, cover to cover. And in that time it provided just about as good an intro as I could hope for.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>3</Rating>
+            <Summary>Ok language intro, but missing context</Summary>
+            <Comment>This book provided a reasonable introduction to the language elements. As a complete novice, I learned enough to read CGI scripts. It was helpful to work on the well-done examples and then to look at the answers. I would have preferred a "log cracking" example rather than "secret words". Although I got the syntax of the hashes, I missed their glory in solving problems. The regular expression examples were good, but I could have used a full-blown example here also. This book sent me searching for CGI/web packages, such as the database package DBI (which may have been more useful than the DBM), the graphics package (GD), and more on writing HTML code from Perl scripts.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>4</Rating>
+            <Summary>Easy to read, easy to understand.</Summary>
+            <Comment>I found that this book was good, particularly for the Win32 platform, and recommend it to anyone who uses Windows, regardless of their initial interest in programming. The only problems I had with the book are that the CGI (and OOP, which is introduced only in the context of CGI...but it could be so much more) chapter is left in limbo as far as being able to use any of the examples. If it were used on a Unix webserver (which are almost always setup to handle Perl CGI scripts), the examples would work fine. However, this is Perl for Win32, so IIS or PWS (if possible...I don't think it is, however) should be the web platforms targetted, and a "quick and dirty" setup instruction would be good to be able to test those examples.</Comment>
+         </CustomerReview>
+      </Reviews>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B00005R09P/webservices-20?dev-t=MY_AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>B00005R09P</Asin>
+      <ProductName>Programming Perl (2nd Edition)</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>Larry Wall</Author>
+         <Author>Tom Christiansen</Author>
+         <Author>Randal L. Schwartz</Author>
+         <Author>Stephen Potter</Author>
+      </Authors>
+      <ReleaseDate>October, 1996</ReleaseDate>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B00005R09P.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B00005R09P.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B00005R09P.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$44.95</ListPrice>
+      <OurPrice>$19.99</OurPrice>
+      <SalesRank>494,824</SalesRank>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Operating Systems - UNIX</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computer Books: Languages</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Unix (Operating System)</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computer Bks - Languages / Programming</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computers</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Programming Languages - CGI, Javascript, Perl, VBScript</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Bargain</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Paperback</Media>
+      <NumMedia>1</NumMedia>
+      <Isbn>B00005R09P</Isbn>
+      <Availability>THIS TITLE IS CURRENTLY NOT AVAILABLE. If you would like to purchase this title, we recommend that you occasionally check this page to see if it has become available.</Availability>
+      <ProductDescription>The second edition of the Camel Book is more than 600 pages long and full of excellent instruction and sound advice. Topics include all the good stuff from the first edition plus Perl 5 features such as nested data structures (ever made a hash of arrays of hashes?), modules, and objects. From &lt;NOBR>&lt;CODE>"Howdy World"&lt;/CODE>&lt;/NOBR> to making your own modules, this book has it all.</ProductDescription>
+      <Reviews>
+         <AvgCustomerRating>4.17</AvgCustomerRating>
+         <TotalCustomerReviews>209</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>Who said ....</Summary>
+            <Comment>The book is definetely written for those who at least have some (or maybe a little more than just "some") programming background, and willing to learn Perl from the author of the language.&lt;P>I read the first edition of the book, which was about 200 pages, or something in that range, which filled my mind with nothing but questions. Current edition, however, could answer to all of those questions (well, almost). Of course, to make it answer them I had to re-read the book four times. But none of the books I currently own (and I own quite a few) could've taken me to the innards of the language so deep no matter how many times I had read them. So the book is of value. &lt;P>The Camel book, especially, does a great job on Regular Expressions and pattern matching. If you want to learn RegEx of perl in very details, you definitely need listen to the author of Perl. "Mastering Regular Expressions" by Jeffrey Friedl is also a good choise, but doesn't include the latest updates.&lt;P>Formats aren't covered very well though. So you might consider "The Lama book" for that ("Learning Perl"). Still, none of the books can tell you about the innards of the Perl in so much detail overall than "Programming Perl".&lt;P>OOP is also toched upon in the book. Since purpose of the author is not to preach you OO lingo (but plain Perl), you'll treat that part just as an intorduction to OOP and consider "Object Oriented perl" by Damian Convey as the next text book. &lt;P>I found chpater 14, "Tied variables" very helpfull though. It might remind you of DBM/Berkley DB, through the syntax &lt;P>tie my %db, 'AnyDBM_File', 'my_file', O_CREAT|O_RDWR, 0664;&lt;P>but unfortunately it's not about DBM at all. It is about how the "tie" function works, and teaches you how to create your own classes for implementing with "tie". After that chapter, I even had to update some of my classes and saved lots of time for their updates. &lt;P>"Compiling", chapter 18 ,is a must read chapter for those who "live &amp; breath" with Perl (like me, may be ?).&lt;P>I don't want you to buy the book unless you have a good understanding of Programming or/and have knowledge of some programming languages. Otherwise, it won't help at all. &lt;P>If your purpose is just to get started with Web applications, go for "CGI progamming 101" by Jacqueline Hamilton. It is a good start. But if you want to go even deeper, "Learning Perl" and "Perl Coookbook" is the next choise. Keep the "The Camel" book as the next (but definitely, not the last).</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>A hard earned tip for tutorial use</Summary>
+            <Comment>Hola! from the most wired dormatory in America, &lt;P>I thought my CS friends were crazy. Fell asleep to Chapter 2. I dare not even look at the alphabetical Ch. 3 and 7. How can this be the famous tutorial? The problem is simple: it's a bible. Quite literally. No nonsense details, and lots of it. Don't give up. The authors thought of you. There's hope. &lt;P>Heed Ch. 2's subtle suggestion as to how you might want to use the book as a tutorial: &lt;P>A. The >contexts&lt; in which Perl language features, basic Perl functions, and core Perl libraries will be used are not in Ch. 2, 3, or 7--Ch. 4-6 reveals all. Look there instead. Code examples and real world use are simply saved for later. This is a great way to preserve the succinct nature of a deskside reference.&lt;P>B. Read it backwards! Skim pass Ch. 2, 3, and 7 if you have some programming background. Refer to them as you stumble across strange terrain during your careful study of Ch 4-6. Read this way the reference becomes a tender tutorial. Your fingers will also become very familiar with the whereabouts of each toy in this treasure chest. &lt;P>This book is a pearl. So is the community.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>4</Rating>
+            <Summary>The Perl bible, plain and simple</Summary>
+            <Comment>I regard this book as the Perl equivalent of Stroustrup's The C++ Programming Language. Simply put, it is the bible for the language: long, thorough, authoratative, and indulging in a fair amount of proselytizing. (The preaching becomes almost amusing when it tries to portray Perl's implementation of OOP as anything but ugly.) If nothing else, the authors' enthusiasm for the language shines through. Along with a somewhat witty writing style, it makes for good reading.&lt;P>I have to disagree with those warning Perl newbies away from this book. I must admit that I did read Learning Perl first, as a result of all these cautionary tales. However, I felt that I learning nothing useful from the Llama, and I didn't even write my first Perl program until I began the Camel. Reading Programming Perl was very satisfying in that it portrayed the language in a no-nonsense manner that allowed me at last to see all that Learning Perl tried so hard to hide. Certainly, I don't recommend Programming Perl to those who are programming for the first time. However, experienced C programmers and computer scientists will probably pick up Perl pretty readily from this book. If nothing else, at least try Programming Perl first. You'll certainly need it eventually, since Learning Perl is not sufficient for anything but the most surface understanding of how to use the language. (The authors at least address the reader as somebody who knows nothing about Perl.)&lt;P>The bottom line: if you're a programmer, you should have this book. Perl is just too useful a language not to know.</Comment>
+         </CustomerReview>
+      </Reviews>
+      <SimilarProducts>
+         <Product>0596001320</Product>
+         <Product>0596003137</Product>
+         <Product>0596002890</Product>
+         <Product>1565922204</Product>
+         <Product>1565924193</Product>
+      </SimilarProducts>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/1590593235/webservices-20?dev-t=MY_AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>1590593235</Asin>
+      <ProductName>Randal Schwartz's Perls of Wisdom</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>Randal Schwartz</Author>
+         <Author>Randal L. Schwartz</Author>
+         <Author>Apress</Author>
+      </Authors>
+      <ReleaseDate>01 March, 2004</ReleaseDate>
+      <Manufacturer>APress</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/1590593235.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/1590593235.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/1590593235.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$29.99</ListPrice>
+      <OurPrice>$20.99</OurPrice>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Computer Books: Languages</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computer Bks - Languages / Programming</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computers</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Programming Languages - CGI, Javascript, Perl, VBScript</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Paperback</Media>
+      <NumMedia>1</NumMedia>
+      <Isbn>1590593235</Isbn>
+      <Availability>Not yet released.</Availability>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/0201419750/webservices-20?dev-t=MY_AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>0201419750</Asin>
+      <ProductName>Effective Perl Programming: Writing Better Programs With Perl</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>Joseph N. Hall</Author>
+         <Author>Randal Schwartz</Author>
+      </Authors>
+      <ReleaseDate>30 December, 1997</ReleaseDate>
+      <Manufacturer>Addison-Wesley Pub Co</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/0201419750.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/0201419750.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/0201419750.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$34.95</ListPrice>
+      <OurPrice>$24.47</OurPrice>
+      <UsedPrice>$17.86</UsedPrice>
+      <ThirdPartyNewPrice>$20.00</ThirdPartyNewPrice>
+      <SalesRank>45,282</SalesRank>
+      <Lists>
+         <ListId>IEF1DNVKZO8B</ListId>
+         <ListId>HB1RWLRSGVKC</ListId>
+         <ListId>22BZURF930GVX</ListId>
+      </Lists>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Perl (Computer program languag</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Object-Oriented Programming</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computer Programming Languages</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computer Bks - Languages / Programming</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computers</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Programming Languages - CGI, Javascript, Perl, VBScript</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Programming - Object Oriented Programming</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Paperback</Media>
+      <NumMedia>1</NumMedia>
+      <Isbn>0201419750</Isbn>
+      <Availability>Usually ships within 24 hours</Availability>
+      <ProductDescription>&lt;I>Effective Perl Programming&lt;/I> is a gem of a Perl book. Its author, Joseph Hall, is a well-known Perl instructor and frequent poster on the seminal comp.lang.perl.misc newsgroup. The book's technical editor is none other than Randal Schwartz, noted Net personality, enigmatic author of &lt;I>Learning Perl&lt;/I>, and contributor to &lt;I>Programming Perl&lt;/I>.&lt;p> Hall has distilled his years of Perl experience into a book for Perl programmers that is both fluid and fun to read. It's somewhat like reading the Perl FAQ; even when you think you know everything, there's so much you don't know.&lt;p> &lt;I>Effective Perl Programming&lt;/I> has a clear layout: the text is easy on the eyes and the monospaced font makes a clear distinction between backticks and single quotes. Hall uses his PEGS (PErl Graphical Structures) notation to show the difference between Perl's different types of data structures and how everything ties together.&lt;p> Packed with great examples and code snippets, this book is an excellent source of tips and tricks to make your Perl programs faster and easier to read. You'll also find a strong section on using the Perl debugger to improve your Perl programming skills. In yet another section, Hall walks the reader through the creation of a complete XS module that can boost the performance of array shuffling eight-fold. All in all, this is a great book for programmers who want to move beyond plain, verbose Perl toward a more succinct and powerful coding style.</ProductDescription>
+      <Reviews>
+         <AvgCustomerRating>4.85</AvgCustomerRating>
+         <TotalCustomerReviews>40</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>4</Rating>
+            <Summary>lightweight</Summary>
+            <Comment>Well written, succinct, no fat. Material is too simple for CS or Perl experts or for advanced readers who want a deeper look under the covers. Covers a broad swath of perl issues in a very shallow manner. Pricy for the skinny size of the book -- I read it over 4 days before going to bed. Not much of a reference. Good starting point for many ideas and other more specialized books and online docs.&lt;P>I wanted to give it 3*. But I am not the intended audience since I have nearly 10 years of professional experience in Perl. I wish I borrowed a copy or read it in the book store. For someone with 6 months to 2 years of Perl experience it could be a good book to kick you up to the next level of Perl.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>4</Rating>
+            <Summary>A little more in-depth.</Summary>
+            <Comment>This book covers some cool tricks and tips and more efficient coding than some of the other Perl books. Few books I believe actually add to your knowledge and offer ideas and inspiration. For a Perl book after you've got some experience--or even not--this one's pretty good.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>4</Rating>
+            <Summary>Write more perl-ish perl</Summary>
+            <Comment>I started writing perl around ten years ago, and at the time my perl looked a lot like the c code I wrote in 1990.. or the FORTRAN code I wrote in 1975! And so it was for many years.&lt;P>But this book, more than any other, helped turn me into an actual perl programmer. It covers the basics- things like 'use "$_" implcitly whenever possible, but don't refer to it explicitly if you don't have to'. There's a good description of slurp mode. And it covers those neat little tricks, like using:&lt;P>($a,$b)[$a&lt;$b]&lt;P>to return the greater of two scalars.&lt;P>It's not a book for the absolute beginner. But once you've written a few programs and start wondering why your perl doesn't look like that written by the perl gurus, this is the book to get.</Comment>
+         </CustomerReview>
+      </Reviews>
+      <SimilarProducts>
+         <Product>1884777791</Product>
+         <Product>0596003137</Product>
+         <Product>0596004788</Product>
+         <Product>0596000278</Product>
+         <Product>0596002890</Product>
+      </SimilarProducts>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/0596004788/webservices-20?dev-t=MY_AMAZON_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>0596004788</Asin>
+      <ProductName>Learning Perl Objects, References &amp; Modules</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>Randal L. Schwartz</Author>
+         <Author>Tom Phoenix</Author>
+      </Authors>
+      <ReleaseDate>06 June, 2003</ReleaseDate>
+      <Manufacturer>O'Reilly &amp; Associates</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/0596004788.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/0596004788.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/0596004788.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$34.95</ListPrice>
+      <OurPrice>$24.47</OurPrice>
+      <UsedPrice>$21.95</UsedPrice>
+      <ThirdPartyNewPrice>$22.99</ThirdPartyNewPrice>
+      <SalesRank>7,760</SalesRank>
+      <Lists>
+         <ListId>1OQV9AGCQG0ED</ListId>
+         <ListId>1BIH9M0YMNUFG</ListId>
+         <ListId>2ECDFGNWHAGNL</ListId>
+      </Lists>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Computer Books: Languages</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computer Bks - Languages / Programming</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computers</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Programming Languages - CGI, Javascript, Perl, VBScript</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Programming - General</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Paperback</Media>
+      <NumMedia>1</NumMedia>
+      <Isbn>0596004788</Isbn>
+      <Availability>Usually ships within 24 hours</Availability>
+      <Reviews>
+         <AvgCustomerRating>4.83</AvgCustomerRating>
+         <TotalCustomerReviews>6</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>Great book for beginners and pros</Summary>
+            <Comment>This book does a great job on helping you grasp the concepts of objects and oop related concepts. I already know perl well, and use daily as part of my job. But I'm so used to procedural programming that I sometimes forget the details about oop. This book helps remind me about oop, and I try to use the examples here when coding new stuff :)</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>Perfect book for taking your Perl skills to the next level</Summary>
+            <Comment>In the world of Perl there was once only the 'camel book,' held in perhaps as much reverence as 'K &amp; R' among C programmers. It certainly appealed to roughly the same audience, those who wanted a short, sharp introduction to a programming language. It was with a problem that needed solving and a copy of the camel book that I started as a Perl programmer.&lt;P>Then for those that wanted a introduction to Perl and programming Randal L. Schwartz wrote Learning Perl, a book that has arguably become the definitive textbook for teaching Perl. The one weakness was that it left off before really getting to the guts of building large, complex projects in Perl. It did not cover classes, objects, breaking your code up into pieces or the more arcane aspects of variables, references. For this we had to resort to the last few chapters of the 'camel book' and I, for one, have never really been totally comfortable at this end of the language; when I'm reading someone else's code it might take a couple of reads to fully understand the process. &lt;P>Now this weakness has been well and truly addressed. Schwartz, with Tom Phoenix, has written "Learning Perl Objects, References &amp; Modules", a volume that takes the same steady approach to teaching you the more advanced topics as the earlier 'Learning Perl'. Schwartz has spent the years since writing 'Learning Perl' teaching and writing. You can tell, this is a superbly written book, not that 'Learning Perl' wasn't well written; it's just that this volume is far better. &lt;P>The Guts &lt;P>The book starts with a chapter on building larger programs that covers @INC, eval, do and require before discussing packages and scope. It then has several chapters on references that explains in well understandable fashion and increasing complexity all the ins and outs of references including dereferencing, nested references, references to subroutines and references to anonymous data before a final chapter on references that gives you some incredibly useful tricks such as sorting and recursively defining complex data. &lt;P>The book continues with three chapters that give you a solid grounding in Perl objects. Here Schwartz has assumed that you know at least a little about object oriented programming, some may feel the need for more explanation of concepts might be required, but if you've had any experience in OOP before then the clear examples and descriptions here are probably all you want. &lt;P>Modules are not as well covered, with only a single chapter, but it is hard to think of anything left out, it covers using them and building your own so well that it left me wondering what all the fuss was about, "seems obvious to me." The book concludes with chapters on building a distribution out of your module, testing it using make test (with Test::Harness), Test::Simple and Test::More before a chapter telling you how to contribute to CPAN. &lt;P>Each chapter of the book concludes with a number of small exercises, designed to be done in just a few minutes, that cement the learning of the previous chapter. The answers to these are at the end of the book. &lt;P>Conclusion &lt;P>Once I'd finished I felt I had a much more solid grounding in Perl, certainly I was much better able to understand another programmer's code that dealt with such things as subroutine references and some complex data structures. While the subject matter of this book is almost entirely covered in 'Programming Perl' the tutorial aspects of this book made it much easier going. The style would be familiar to anyone who has read 'Learning Perl', light without being frivolous and extremely well written, Schwartz seems a master at reducing complexity to manageable bites. &lt;P>This book is deceptively easy to follow, each new idea built onto earlier ones, each new language concept introduced in an easy manner. The writing is excellent, it's hard to explain why I appreciated it so much. That may be the reason, the writing isn't forced or heavy or too light or obvious. It just allows the solid material of the book to shine through. Go to the ubiquitous O'Reilly website and grab the example chapter (the site also has a few Errata, the Table of Contents and the code from the book) and give it a look. &lt;P>I think this may well become a classic, I may well in ten years time talk of Schwartz's books with the same awe I now talk of Brian Kernighan's. I'll certainly eagerly await his next book and keep this one close until it comes. Oh, and Randal, how about 'Software Tools for Perl Programmers'?</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>4</Rating>
+            <Summary>Good for intermediate perl programmers</Summary>
+            <Comment>To me, this book seemed like two books:&lt;P>1) Shared Libraries, References, Data Structures, Scoping, and other things in perl. -- For internmediate programmers.&lt;P>2) OO Perl, Distributions, and Testing in Perl - Step-by-Step - For advnaced perl programmers who aspire to be wizards.&lt;P>For me, part 1 was mostly review. Part 2 is good schtuff, but it's not very deep. You could call it "a gentle introduction to OO"&lt;P>My conclusion: The earlier in your career you read this book, the better. If the topics in #1 or #2 are "new" to you, go buy the book. Seriously. The comments on h2xs and the design patterns that schwartz sets up -alone- make it worth the price.</Comment>
+         </CustomerReview>
+      </Reviews>
+      <SimilarProducts>
+         <Product>0596003137</Product>
+         <Product>0596004990</Product>
+         <Product>0596002270</Product>
+         <Product>0596001320</Product>
+         <Product>0596000278</Product>
+      </SimilarProducts>
+   </Details>
+</ProductInfo>

Added: packages/libnet-amazon-perl/branches/upstream/current/t/canned/reviews.xml
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/t/canned/reviews.xml	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/t/canned/reviews.xml	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?><ProductInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xml.amazon.com/schemas2/dev-heavy.xsd">
+
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/0201360683/webservices-20?dev-t=YOUR_AMZN_TOKEN">
+      <Asin>0201360683</Asin>
+      <ProductName>Perl Power!: A JumpStart Guide to Programming with Perl 5</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>Michael Schilli</Author>
+      </Authors>
+      <ReleaseDate>16 December, 1998</ReleaseDate>
+      <Manufacturer>Addison-Wesley Pub Co</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/0201360683.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/0201360683.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/0201360683.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$39.99</ListPrice>
+      <OurPrice>$39.99</OurPrice>
+      <UsedPrice>$3.00</UsedPrice>
+      <ThirdPartyNewPrice>$14.97</ThirdPartyNewPrice>
+      <SalesRank>221,770</SalesRank>
+      <Lists>
+         <ListId>2J4E2VTVBUIYE</ListId>
+      </Lists>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Perl (Computer program languag</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Object-Oriented Programming</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computer Bks - Languages / Programming</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Computers</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Programming Languages - CGI, Javascript, Perl, VBScript</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Programming - General</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Professional - General</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Programming - Object Oriented Programming</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Paperback</Media>
+      <NumMedia>1</NumMedia>
+      <Isbn>0201360683</Isbn>
+      <Availability>THIS TITLE IS CURRENTLY NOT AVAILABLE. If you would like to purchase this title, we recommend that you occasionally check this page to see if it has become available.</Availability>
+      <Reviews>
+         <AvgCustomerRating>4.33</AvgCustomerRating>
+         <TotalCustomerReviews>6</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>4</Rating>
+            <Summary>Good introduction to Perl, and great reference</Summary>
+            <Comment>From its corny title you might expect another one of those sleazy introductions to Perl (I can name a few), but I can happily say that this book is an exception. The overview of the language is excellent and very comprehensible. Even after reading Learning Perl and Programming Perl, I picked up some valuable tips. The chapters on Object Oriented Programming and Perl/Tk are also good. For the Perl/CGI part, you might consider reading additional material, however. All in all, a surprisingly good introduction and reference to Perl 5, both for the beginner and the more advanced programmer.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>Perl power</Summary>
+            <Comment>Excellent book that gets you started with lots of areas of perl. Most of the code I have tried works fine with Activestates's 523 build and with the perl development kit 1.2.4. Having code that work is rare with these books especially with Windows. I use 98 and NT and unix. This book is not a diffinitive guide to perl but it gives you a good summay in most of the important area's and enought code to get started quickly. It gave me lots of ideas on things I could use perl for. I also like "Perl 5 complete" for theory, but the code for that book is very buggy and hard to get to work. I like its detailed explanation of how things are suppose to work. "Perl Cookbook" is also excellent for how to solve problems various kinds of problems. These are the best of the perl books I have.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>2</Rating>
+            <Summary>Don't buy this book for CGI programming</Summary>
+            <Comment>I bought this book based on the 5-star reviews - never do THAT again......long on abstract examples that don't mirror the real world, short on logical explanations for the common man(woman).. I have had several other PERL books from the local library that were much better (Castros book is good, don't believe the condescending reviews) - not for the CGI web programmer</Comment>
+         </CustomerReview>
+      </Reviews>
+      <SimilarProducts>
+         <Product>0672320673</Product>
+      </SimilarProducts>
+   </Details>
+</ProductInfo>

Added: packages/libnet-amazon-perl/branches/upstream/current/t/canned/seller.xml
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/t/canned/seller.xml	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/t/canned/seller.xml	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?><SellerSearch xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xml.amazon.com/schemas3/dev-heavy.xsd">
+
+<Request><Args><Arg value="libwww-perl/5.76" name="UserAgent"></Arg><Arg value="0FSY2GPG03C1RDF25WN7" name="RequestID"></Arg><Arg value="us" name="locale"></Arg><Arg value="1" name="page"></Arg><Arg value="YOUR_AMZN_TOKEN" name="dev-t"></Arg><Arg value="webservices-20" name="t"></Arg><Arg value="xml" name="f"></Arg><Arg value="books" name="mode"></Arg><Arg value="A2GXAGU54VOP7" name="SellerSearch"></Arg><Arg value="heavy" name="type"></Arg><Arg value="+salesrank" name="sort"></Arg></Args></Request>   <SellerSearchDetails>
+      <SellerNickname>_athenaeum_</SellerNickname>
+      <StoreId>S1CTCSZADC15MI</StoreId>
+      <StoreName>myAthenaeum</StoreName>
+      <NumberOfOpenListings>32000</NumberOfOpenListings>
+      <ListingProductInfo>
+         <ListingProductDetails>
+            <ExchangeId>Y01Y5300403Y4827404</ExchangeId>
+            <ListingId>0529T326057</ListingId>
+            <ExchangeTitle>Train Song [Library Binding]  by Siebert, Diane; Wimmer, Mike</ExchangeTitle>
+            <ExchangePrice>$2.98</ExchangePrice>
+            <ExchangeAsin>0690047282</ExchangeAsin>
+            <ExchangeEndDate>12/31/1969 16:00:00 PST</ExchangeEndDate>
+            <ExchangeOfferingType>used</ExchangeOfferingType>
+            <ExchangeSellerId>A2GXAGU54VOP7</ExchangeSellerId>
+            <ExchangeSellerNickname>_athenaeum_</ExchangeSellerNickname>
+            <ExchangeStartDate>05/29/2004 12:58:17 PDT</ExchangeStartDate>
+            <ExchangeStatus>Open</ExchangeStatus>
+            <ExchangeQuantity>1</ExchangeQuantity>
+            <ExchangeQuantityAllocated>0</ExchangeQuantityAllocated>
+            <ExchangeFeaturedCategory>68297</ExchangeFeaturedCategory>
+            <ExchangeCondition>EX-LIBRARY item sometimes shows stamps, stickers and library marks.  Items not meeting quality expectations may be returned for refund.</ExchangeCondition>
+            <ExchangeConditionType>good</ExchangeConditionType>
+            <ExchangeAvailability>Usually ships in 1-2 business days</ExchangeAvailability>
+            <ExchangeSellerState>CO</ExchangeSellerState>
+            <ExchangeSellerCountry>United States</ExchangeSellerCountry>
+            <ExchangeSellerRating>4.5</ExchangeSellerRating>
+         </ListingProductDetails>
+         <ListingProductDetails>
+            <ExchangeId>Y01Y4762949Y4451986</ExchangeId>
+            <ListingId>0709W594490</ListingId>
+            <ExchangeTitle>Railroad Schemes (Thorndike Large Print Basic Series) [LARGE PRINT]  by Holland</ExchangeTitle>
+            <ExchangePrice>$1.95</ExchangePrice>
+            <ExchangeAsin>0786213213</ExchangeAsin>
+            <ExchangeEndDate>12/31/1969 16:00:00 PST</ExchangeEndDate>
+            <ExchangeOfferingType>used</ExchangeOfferingType>
+            <ExchangeSellerId>A2GXAGU54VOP7</ExchangeSellerId>
+            <ExchangeSellerNickname>_athenaeum_</ExchangeSellerNickname>
+            <ExchangeStartDate>07/09/2004 23:38:08 PDT</ExchangeStartDate>
+            <ExchangeStatus>Open</ExchangeStatus>
+            <ExchangeQuantity>1</ExchangeQuantity>
+            <ExchangeQuantityAllocated>0</ExchangeQuantityAllocated>
+            <ExchangeFeaturedCategory>68297</ExchangeFeaturedCategory>
+            <ExchangeCondition>EX-LIBRARY item sometimes shows stamps, stickers and library marks.  Items not meeting quality expectations may be returned for refund.</ExchangeCondition>
+            <ExchangeConditionType>good</ExchangeConditionType>
+            <ExchangeAvailability>Usually ships in 1-2 business days</ExchangeAvailability>
+            <ExchangeSellerState>CO</ExchangeSellerState>
+            <ExchangeSellerCountry>United States</ExchangeSellerCountry>
+            <ExchangeSellerRating>4.5</ExchangeSellerRating>
+         </ListingProductDetails>
+      </ListingProductInfo>
+   </SellerSearchDetails>
+</SellerSearch>

Added: packages/libnet-amazon-perl/branches/upstream/current/t/canned/textstream.xml
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/t/canned/textstream.xml	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/t/canned/textstream.xml	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,768 @@
+<?xml version="1.0" encoding="UTF-8"?><ProductInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xml.amazon.com/schemas3/dev-heavy.xsd">
+
+<Request><Args><Arg value="libwww-perl/5.76" name="UserAgent"></Arg><Arg value="1HE4HRXV9DGAZ5X8H2C2" name="RequestID"></Arg><Arg value="us" name="locale"></Arg><Arg value="1" name="page"></Arg><Arg value="MY_AMZN_TOKEN" name="dev-t"></Arg><Arg value="webservices-20" name="t"></Arg><Arg value="xml" name="f"></Arg><Arg value="Here's some blurb mentioning the rolling stones" name="TextStreamSearch"></Arg><Arg value="books" name="mode"></Arg><Arg value="heavy" name="type"></Arg><Arg value="+salesrank" name="sort"></Arg></Args></Request>   <Details url="http://www.amazon.com/exec/obidos/ASIN/0743201205/webservices-20?dev-t=MY_AMZN_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>0743201205</Asin>
+      <ProductName>The Rolling Stone Encyclopedia of Rock &amp; Roll (Revised and Updated for the 21st Century)</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>Holly George-Warren</Author>
+         <Author>Patricia Romanowski</Author>
+         <Author>Jon Pareles</Author>
+      </Authors>
+      <ReleaseDate>30 October, 2001</ReleaseDate>
+      <Manufacturer>Fireside</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/0743201205.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/0743201205.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/0743201205.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$27.00</ListPrice>
+      <OurPrice>$27.00</OurPrice>
+      <UsedPrice>$10.73</UsedPrice>
+      <CollectiblePrice>$29.97</CollectiblePrice>
+      <ThirdPartyNewPrice>$10.71</ThirdPartyNewPrice>
+      <SalesRank>28,865</SalesRank>
+      <Lists>
+         <ListId>17VV8YRGRHWVB</ListId>
+         <ListId>25ZJGHH0NTBW1</ListId>
+         <ListId>1ABMBLX8XBI7G</ListId>
+      </Lists>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Rock music</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Encyclopedias</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Music</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Rock</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Reference</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Paperback</Media>
+      <NumMedia>1</NumMedia>
+      <Isbn>0743201205</Isbn>
+      <Availability>Usually ships within 24 hours</Availability>
+      <Reviews>
+         <AvgCustomerRating>3.73</AvgCustomerRating>
+         <TotalCustomerReviews>11</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>4</Rating>
+            <Summary>The Rolling Stone Encyclopedia of Rock &amp; Roll</Summary>
+            <Comment>We purchased the original one and are thrilled that they finally came out with an update! Such a great tool to learn about your favorite groups, their history, their top hits, etc. Music selection is so much easier and really helps refresh your memory of the great Rock and Roll you grew up with!&lt;P>Now, if only we could get it on CD (would make quick lookups a breeze, especially when you know a hit song but can't remember who sings it, or vice versa).</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>2</Rating>
+            <Summary>Well written book - but incomplete (without an index!)</Summary>
+            <Comment>The Rolling Stone Encyclopedia of Rock&amp;Roll is the bible of Rock&amp;Roll for the most of music lovers except those who like to listen to the music of e.g. The Mission (UK), M People, Talk Talk and Nik Kershaw who aren't included (they weren't in the second edition neither!). Among the artists who were excluded from this edition are some that didn't deserve this, e.g. The Soup Dragons, Level 42 and Gene Loves Jezebel. On back cover of the encyclopedia it's written that it's "the authoritative volume on world's music makers - from the one-hit wonders to the megastars". But most of the artist I've just mentioned are more than one-hit wonders.&lt;P>However, the essential fault of this (self proclaimed?) music bible is a fact that there is no index in it. I can hardly believe that in the era of computerized text editing such book (with a plenty of names mentioned) is published without an index! Very well written articles are a poor consolation if I can't find which band's member is e.g. James Iha whose solo CD I've seen once, or - if I can't recall the name of The Fugees - where to search for Pras.&lt;P>PS&lt;BR>I gave The Rolling Stone Encyclopedia of Rock&amp;Roll 4 stars for its articles and 1 stars for its editorial scheme (missing Index!).</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>2</Rating>
+            <Summary>FAR from complete.</Summary>
+            <Comment>I got this book for Christmas last year. Good resource for a lot of bands and musicians. So what's wrong?&lt;P>Where's Pantera?&lt;P>Where's Dream Theater?&lt;P>Those are the only two I can think of offhand. There is way, WAY too much vital stuff missing.</Comment>
+         </CustomerReview>
+      </Reviews>
+      <SimilarProducts>
+         <Product>0679737286</Product>
+         <Product>1841953121</Product>
+         <Product>087930653X</Product>
+         <Product>0823076903</Product>
+         <Product>0811829782</Product>
+      </SimilarProducts>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/0811840603/webservices-20?dev-t=MY_AMZN_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>0811840603</Asin>
+      <ProductName>According to the Rolling Stones</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>The Rolling Stones</Author>
+      </Authors>
+      <ReleaseDate>October, 2003</ReleaseDate>
+      <Manufacturer>Chronicle Books</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/0811840603.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/0811840603.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/0811840603.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$40.00</ListPrice>
+      <OurPrice>$28.00</OurPrice>
+      <UsedPrice>$14.98</UsedPrice>
+      <ThirdPartyNewPrice>$15.99</ThirdPartyNewPrice>
+      <SalesRank>5,897</SalesRank>
+      <Lists>
+         <ListId>36OAHKEGVESDQ</ListId>
+         <ListId>2G9ZRPHAYQGL2</ListId>
+         <ListId>3E9XTGMN0UGPQ</ListId>
+      </Lists>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Composers &amp; Musicians - General</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Biography &amp; Autobiography</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Music</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Rock</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>History &amp; Criticism - General</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Hardcover</Media>
+      <NumMedia>1</NumMedia>
+      <Isbn>0811840603</Isbn>
+      <Availability>Usually ships within 24 hours</Availability>
+      <ProductDescription>&lt;I>According to the Rolling Stones&lt;/I> hews closely to the formula set in 2000 by the publication of &lt;I>The Beatles Anthology&lt;/I>. Like its predecessor, it's a beautiful coffee table tome with hundreds of gorgeous photographs, from childhood pics of Mick Jagger and Keith Richards to concert shots from the 40 Licks Tour. The text is taken from recent interviews with the band's four latter-day members (Mick, Keith, Charlie Watts, and Ronnie Wood). Notably missing, however, is any contribution from former bassist Bill Wyman, who left the band in the early '90s and published his own history of the band in 2002, &lt;I>Rolling with the Stones&lt;/I>. Where Wyman is an obsessive collector and diarist, the other Stones are more impressionistic in their memories, lending an approach to history as casual as the band&amp;#146;s concerts are rigorously planned and staged. &lt;p>  The first half of the Stones story has plenty of high drama (tours through the segregated South, Brian Jones's death, Altamont), which no one seems eager to reflect on deeply. (Charlie is the only one even to mention Altamont.) The more recent years has seen a long string of ever-more-successful tours and ever-less-popular albums, interrupted only by Mick and Keith&amp;#146;s near divorce in the '80s, plus rehab stints for Charlie and Ronnie. While &lt;I>The Beatles Anthology&lt;/I> offered the surviving members' interpretations of their experiences at a distance of 30 or more years, the Stones are still living the tale they're trying to tell--and they aren&amp;#146;t always the most self-aware narrators. Or generous: Wyman's three-decade tenure is given short shrift, but the book finds enough space for some unnecessary digs (Wyman has "tiny hands," we're told, and an "almost effeminate" style of playing).&lt;p>  To flesh out the band members' own recollections, the book also contains 13 essays from music-industry friends (Ahmet Ertegun, Marshall Chess), collaborators (Don Was), famous fans (Sheryl Crow, novelist Carl Hiaasen), and, yes, even the band's financial advisor for the past 33 years, Prince Rupert Lowenstein. Their views are sometimes fascinating (the unvarnished perspective of Crawdaddy Club owner Giorgio Gomelsky, the well-told stories of art &lt;I>bon vivant&lt;/I> Christopher Gibbs), but just as often self-indulgent or sycophantic. Fans looking for an artfully designed volume of photos spanning the Stones' career won't be disappointed. Anyone seeking a comprehensive history of the band may want to wait for the band's definitive biography, which has attempted many times but has yet to be written. &lt;I>--Keith Moerer&lt;/I></ProductDescription>
+      <Reviews>
+         <AvgCustomerRating>3.85</AvgCustomerRating>
+         <TotalCustomerReviews>13</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>Great Book for Stones Fans or anyone who loves Rock and Roll</Summary>
+            <Comment>If you are a Stones fan, you'll love this book. I've been a Stones fan for years and seen many books about them, but According To The Rolling Stones has tons of pictures, stories, and information that are new to me. The lay-out of the text and photos makes it a great coffee table book, and the writing by the Stones themselves is fascinating. I actually preferred this book to The Beatles Anthology, but that is probably because I prefer the Stones to the Beatles, not because of the quality of either of the books. Not only is it good for fans of the band, any one who has an appreciation of rock and roll history will learn a lot from this book.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>3</Rating>
+            <Summary>Not Too Bad - Not Too Good Either</Summary>
+            <Comment>Content is weak and very incomplete. Furthermore, a little too much Brian bashing for my taste. Good photographs however. A much better Stones book is Bill Wyman's. There is a reason why According to the Rolling Stones is selling at $24.00 down from the original $40.00 - it probably is not selling well, and for good reason. There are better Stones books than these two also out there.......check them out. I remember In Their Own words being entertaining, just interviews.....either Mick Jagger or Rolling Sones, can't remember. David Dalton has a great book: The first twenty years.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>1</Rating>
+            <Summary>I'm Angry at The Stones!</Summary>
+            <Comment>The new Stones "coffee table book" is a disgrace in how it treats Mick Taylor. Ronnie Wood feels "sorry" for Mick Taylor? What a pitiful joke! Ronnie Wood's guitar playing is the only thing that's "sorry"! And that story about Taylor passing a note backstage stating that he was broke and had no confidence. It sounds "fishy" to me, but even if it's true, Wood has no class for repeating it. Even Charlie Watts jumped on the bandwagon with some anti-Taylor remarks. What's the point? It's not like Taylor is cutting into their record sales or anything like that. Why are they being so vindictive? Overall, I still like their music and their shows are entertaining, but this book has angered me. One of the other posters nailed it on Woody: He's just Mick Jagger's mouthpiece. Ronnie Wood couldn't shine Mick Taylor's shoes when it comes to playing guitar. The biggest joke on their last tour was Ronnie's horrible guitar playing on Can't You Hear Me Knockin'. With all their money and all their success, their insecurity shines through with the terrible trashing they gave the most talented guitarist that ever played with them. If it wasn't for Mick Taylor, there would have been no "golden period" for the band. Can you imagine Wood playing on Exile or Ya-Ya's or Sticky Fingers? Those great albums would have been mediocre at best if Wood had played on them!!!! I can't even think about it. It's too upsetting! One last thing on this book: Keith, in particular, really let me down with his comments about Taylor. He says that Taylor hasn't done anything since leaving the Stones. To that I'll reply with one of Keith's own favorite responses: "Rubbish!" Just because Taylor's albums don't sell millions of copies doesn't mean he hasn't done anything or that he isn't a great musician or performer! Let's face it, other than Tatoo You (which was mostly pulled from the Taylor-year archives ANYWAY) and Some Girls, most of their stuff since Taylor left the band is lackluster at best or tired retreads of hits from their golden years with Taylor at worst. The Stones have no class...plain and simple. I saw Mick Taylor at the Stanhope House in Stanhope, NJ recently and he put on a great show! Nobody plays lead or slide like him and noone ever will. Keith and Woody are just jealous because Taylor proves his superiority every time he picks up a guitar. Sign me "Angry at the Stones in Jersey City"!!!</Comment>
+         </CustomerReview>
+      </Reviews>
+      <SimilarProducts>
+         <Product>B0000BV21X</Product>
+         <Product>1901447049</Product>
+         <Product>0752589717</Product>
+         <Product>0972370404</Product>
+         <Product>0789489678</Product>
+      </SimilarProducts>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/0898987393/webservices-20?dev-t=MY_AMZN_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>0898987393</Asin>
+      <ProductName>The Rolling Stones Singles Collection: The London Years / Guitar Tab Edition</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>Rolling Stones</Author>
+         <Author>Carol Cuellar</Author>
+      </Authors>
+      <ReleaseDate>15 April, 1991</ReleaseDate>
+      <Manufacturer>Warner Brothers Publications</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/0898987393.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/0898987393.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/0898987393.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$29.95</ListPrice>
+      <OurPrice>$29.95</OurPrice>
+      <UsedPrice>$21.38</UsedPrice>
+      <ThirdPartyNewPrice>$21.19</ThirdPartyNewPrice>
+      <SalesRank>43,025</SalesRank>
+      <Lists>
+         <ListId>18EOYXY8CYHX0</ListId>
+      </Lists>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Music</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Songbooks - Popular</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Rock</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Musical Instruments - Guitar</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Paperback</Media>
+      <NumMedia>1</NumMedia>
+      <Isbn>0898987393</Isbn>
+      <Availability>Usually ships within 24 hours</Availability>
+      <Reviews>
+         <AvgCustomerRating>4</AvgCustomerRating>
+         <TotalCustomerReviews>1</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>4</Rating>
+            <Summary>Great tabs on the stones</Summary>
+            <Comment>Well put together edition of all of the stones earlier songs. Easy to read and follow.</Comment>
+         </CustomerReview>
+      </Reviews>
+      <SimilarProducts>
+         <Product>0793564379</Product>
+         <Product>0898986710</Product>
+         <Product>0634062867</Product>
+         <Product>0962477060</Product>
+         <Product>063405712X</Product>
+      </SimilarProducts>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/0679737286/webservices-20?dev-t=MY_AMZN_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>0679737286</Asin>
+      <ProductName>The Rolling Stone Illustrated History of Rock and Roll : The Definitive History of the Most Important Artists and Their Music</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>Rolling Stone Magazine</Author>
+      </Authors>
+      <ReleaseDate>10 November, 1992</ReleaseDate>
+      <Manufacturer>Random House</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/0679737286.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/0679737286.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/0679737286.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$34.95</ListPrice>
+      <OurPrice>$24.47</OurPrice>
+      <UsedPrice>$13.95</UsedPrice>
+      <ThirdPartyNewPrice>$22.50</ThirdPartyNewPrice>
+      <SalesRank>29,931</SalesRank>
+      <Lists>
+         <ListId>1ASP3N6YVM1OB</ListId>
+         <ListId>39QBEORKRDX3I</ListId>
+         <ListId>1MPSUY77L20DU</ListId>
+      </Lists>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Rock music</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>History and criticism</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Rock musicians</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Biography</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Music</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Rock</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Paperback</Media>
+      <NumMedia>1</NumMedia>
+      <Isbn>0679737286</Isbn>
+      <Availability>Usually ships within 24 hours</Availability>
+      <Reviews>
+         <AvgCustomerRating>3.75</AvgCustomerRating>
+         <TotalCustomerReviews>4</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>3</Rating>
+            <Summary>Mixed Bag</Summary>
+            <Comment>This history of Rock and Roll comes from Rolling Stone, one of the biggest and longest-lasting names in Rock reporting and coverage. It is truly a mixed bag, ranging anywhere from great historical content to outright howlers. &lt;P>First, the book does an excellent job of covering the entirety of rock history and drawing out its influences and evolutions. It does a wonderful job of covering the different local scenes and how they were integrated in with the whole of rock music. Whole chapters are generally rewarded to the most influential bands, and not just those that sold more album. &lt;P>However, the book suffers a number of strong drawbacks. First, as many pointed out, the book is clearly slanted toward the Rolling Stone perspective. Artists such as Billy Joel, who have not had good relations with the magazine, have been omitted. Several others, such as Bob Seger, were also given no treatment. There is also a bit of redundent content, such as giving the Beatles two whole chapters and then devoting a third (British Invasion) to a primarily Beatles-related topic. Also, there are separate chapters on Motown and Stevie Wonder. &lt;P>Secondly, the book is often skewed toward the "pop" scene when it comments on more current acts. Rolling Stone has been getting even worse about this in its magazine. One particular example that stands out is in the heavy metal section. My edition was published in 1991 and the writer heaps load and loads of praise upon such hair-metal acts as Motley Crue, Poison, Ratt and Warrant. Other, more talented but less popular metal acts, such as Metallica, are put down and summarily dismissed. However, we all know that if this were to have been written 5 years later, Rolling Stone would be worshipping Metallica and praising them for destroying such hair-bands. RS makes the mistake of "going with the flow" one too many times. &lt;P>Overall - nice book, but with some obvious problems.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>3</Rating>
+            <Summary>Definitive? According to who?</Summary>
+            <Comment>Rolling Stone has been around reporting on rock music for nearly 35 years. That longevity only earns them stripes, but not exactly the monker of expert.&lt;P>RS editors - in all fairness like most journalists - have an agenda, and accuracy and fairness in rock isn't exactly one of them. One writer (below) asked why Billy Joel was snubbed. Simple; RS and Joel have publically feuded for years so as far as RS is concerned, one of rock's greatest acts (and an inductee to the Rock Hall of Fame) doesn't exist. In the rock world according to Jann Wenner, there is no greater act in rock history than the Rolling Stones. They're certainly a bellweather act in rock history, but not "the greatest"...but that's how RS sees it, and apparently so should history.&lt;P>So take what they say with a grain of salt, enjoy it for what it is (their fave-raves, as valid as the Listmania right here on Amazon) - cuz after all, it's only rock and roll.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>Much more than I expected at this price</Summary>
+            <Comment>I am fond of The Rolling Stone series. This is history of Most important artists, and for me every important for the rock&amp;roll music can be found in this book. (And much more than I expected at this low price). I am big music fan and this is real thing for my library. Strongly recommended.</Comment>
+         </CustomerReview>
+      </Reviews>
+      <SimilarProducts>
+         <Product>0531158462</Product>
+         <Product>0789496496</Product>
+         <Product>0811829782</Product>
+         <Product>1929049498</Product>
+         <Product>013022636X</Product>
+      </SimilarProducts>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/0789489678/webservices-20?dev-t=MY_AMZN_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>0789489678</Asin>
+      <ProductName>Rolling with the Stones</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>Bill Wyman</Author>
+         <Author>Richard Havers</Author>
+      </Authors>
+      <ReleaseDate>28 October, 2002</ReleaseDate>
+      <Manufacturer>DK Publishing</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/0789489678.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/0789489678.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/0789489678.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$50.00</ListPrice>
+      <OurPrice>$35.00</OurPrice>
+      <UsedPrice>$10.79</UsedPrice>
+      <ThirdPartyNewPrice>$23.25</ThirdPartyNewPrice>
+      <SalesRank>8,049</SalesRank>
+      <Lists>
+         <ListId>3I9E1FWXMI9XU</ListId>
+      </Lists>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Rolling Stones</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Rock musicians</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>England</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Biography</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Rock music</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Biography / Autobiography</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Entertainment &amp; Performing Arts - General</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Composers &amp; Musicians - Rock</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Rock</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Biography &amp; Autobiography</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>History &amp; Criticism - General</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Music</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Hardcover</Media>
+      <NumMedia>1</NumMedia>
+      <Isbn>0789489678</Isbn>
+      <Availability>THIS TITLE IS CURRENTLY NOT AVAILABLE. If you would like to purchase this title, we recommend that you occasionally check this page to see if it has become available.</Availability>
+      <ProductDescription>Of his own choosing, Bill Wyman's career as a founding member of the Rolling Stones has achieved a perspective that his legendary bandmates don't yet enjoy: a beginning, middle, and end. Indeed, the musicians once hailed as the greatest rock &amp; roll band in the world have become more like the band that wouldn't die. But history can't be denied, and the man born William Perks of Lower Sydenham, London, has lovingly assembled this over-500-page book, equal parts memoir and lavishly illustrated coffee-table tome, with a winning mix of clear-eyed reportage (based on his own voluminous diaries) and an eye for colorful detail and ephemera worthy of a proud family scrapbook. Which, in many ways, &lt;I>Rolling with the Stones&lt;/I> most resembles: family--and musical--trees are acknowledged, career moves dissected, deaths mourned, and triumphs and foibles alike are dispensed with equal candor. Wyman deflates the myth of the Stones as rock's preternatural bad boys (a conservative, sensationalist press made it all too easy to live down to expectations) yet allows the tragic legend of band founder Brian Jones to assume its proper perspective. A half-decade older than his bandmates, the retired Stone has few illusions about the band's true cultural impact and creative arc, devoting nearly three-quarters of the book to the Stones' first, turbulent decade. What is more gratifying is that he avoids the myopic constraints of the similarly sized &lt;i>Beatles Anthology&lt;/I>, generously weaving the recollections of band members, associates, family, reporters, and even fan letters into a narrative whose outline is epic, but whose viewpoint has a decidedly human scale. &lt;I>--Jerry McCulley&lt;/I></ProductDescription>
+      <Reviews>
+         <AvgCustomerRating>4.47</AvgCustomerRating>
+         <TotalCustomerReviews>19</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>Get this book on the Rolling Stones if you only get one!</Summary>
+            <Comment>I'm also prejudiced as I'm a very strong and longtime Stones fan, e.g. I've got all the new SACD albums and have seen them 6 times on the 2002 US tour! This book is a superb summary of both their off and on stage escapades with lots of details too. Designed as a high end coffee book it is more than its 2,000 photos, 45 two page tour spreads (yes - each tour and every date is listed up to 1993 - when Bill Wyman had left). Plus their are lots of quotes from many who were there and so much more! It literaly starts with where they were born and goes on from there. Definitely easy to dip in to, say for your favorite album or tour, or to read through in one very long sitting. Highly recommended. Enjoy!</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>Great Coffee Table Book on the Stones!</Summary>
+            <Comment>I was interested when I found out Bill Wyman was doing another book on the history of the "Greatest Rock And Roll Band in the World." His first book "Stone Alone" is one the better books I have read on the history of the band. Unfortunately that book ends at the start of the 1970s. Wyman's new book "Rolling with the Stones" follows the exploits of the band through his entire tenure with the band. Fanatics will enjoy the many pictures of memorabilia from Wyman's own collection. There are a number of rare photographs including some from when the band members were only kids. Other interesting items include many magazine covers and articles, tour posters, and pictures of rare import single sleeves. Album and single releases include track listings, chart positions and information about the original versions of songs the Stones covered. A general set list of songs played on each tour is included as well as list of tour dates and opening acts for each tour. Wyman makes the book a good read by spicing the book with quotes and stories from fans, friends, family, other fellow musicians and the Stones themselves. Many of the quotes and stories pertain to the memorabilia and photos included in the book. Another great aspect of the book is that since Bill Wyman was involved that book does not focus almost entirely on Mick Jagger, Keith Richards, and Brian Jones. The pictures are divided up more evenly among the band members including Ian Stewart. The book is essential to anyone with more than just a passing interest in the Rolling Stones. It was well worth the price especially since I got it on sale.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>The Holy Grail for the Rolling Stones fan</Summary>
+            <Comment>So much has been written about the Rolling Stones over the years, but as shown in his autobiography Stone Alone, Bill Wyman's accounts carry much weight because he was there. This massive book is a huge collage of trivia, photos and memorabilia of the band's long reign. Still, the written content is just as valuable, and Wyman packs every page with inside information and personal observations which makes this priceless. &lt;P>All the famous and not so famous moments of the Rolling Stones' career are highlighted, and the reader is spared the pretensions of the boring rock critics who usually suck the life out of their subjects. Particularly enjoyable (as in Stone Alone) are the anecdotes about the early Stones and their unlikely rise to fame.&lt;P>Lots of tidbits all over; for example, Wyman still seems pissed 30 years later about Keith Richards overdubbing the bass on "Happy". There's trivia, like the story behind the cover shoot of Get Your Ya-Yas out and Andy Warhol's disapproval of the Love You Live cover, as well as detail like the typical set lists from all the tours. Ticket stubs and concert posters are everywhere, now if only I could find my 1979 Oshawa concert ticket that's pictured in the book!&lt;P>Wyman still manages to convey the excitement of the whole experience, and its obvious that he loves being an integral part of the Rolling Stones' legacy.</Comment>
+         </CustomerReview>
+      </Reviews>
+      <SimilarProducts>
+         <Product>0811840603</Product>
+         <Product>0306807831</Product>
+         <Product>0823084167</Product>
+         <Product>0789480468</Product>
+         <Product>0767903137</Product>
+      </SimilarProducts>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/0306811995/webservices-20?dev-t=MY_AMZN_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>0306811995</Asin>
+      <ProductName>S.T.P.: A Journey Through America With The Rolling Stones</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>Robert Greenfield</Author>
+      </Authors>
+      <ReleaseDate>03 September, 2002</ReleaseDate>
+      <Manufacturer>DaCapo Press</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/0306811995.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/0306811995.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/0306811995.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$16.50</ListPrice>
+      <OurPrice>$11.55</OurPrice>
+      <UsedPrice>$4.95</UsedPrice>
+      <ThirdPartyNewPrice>$4.93</ThirdPartyNewPrice>
+      <SalesRank>71,030</SalesRank>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Rolling Stones</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Rock Music</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Biography / Autobiography</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Music</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Composers &amp; Musicians - Rock</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Rock</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>History &amp; Criticism - General</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Paperback</Media>
+      <NumMedia>1</NumMedia>
+      <Isbn>0306811995</Isbn>
+      <Availability>Usually ships within 24 hours</Availability>
+      <Reviews>
+         <AvgCustomerRating>4.5</AvgCustomerRating>
+         <TotalCustomerReviews>2</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>ROLLING WITH THE STONES '72</Summary>
+            <Comment>After being out of print for almost 30 years, I'm glad to see S.T.P. finally available. I've seen and heard references to it for years. I almost broke down and bought a used copy of it on eBay several times. I'm sure glad I waited (and saved a lot of money). While not focused entirely on the Stones themselves, this book does a good job of giving you the flavor of what it was like to tour North America in the summer of '72 with the Stones (and assorted hangers-on) as they brought Exile On Main Street (and Stevie Wonder) to the masses. I couldn't make it all the way through without pulling out my DVD copy of C.S. Blues (the making of which was mentioned in the book). A great look back at the Stones in their prime.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>4</Rating>
+            <Summary>For Stones fans.</Summary>
+            <Comment>A readable and interesting book. I wasn't that interested in those on the peripherals of the Stones touring party, which fills much of this book, but the bits including the Stones themselves are very interesting and entertaining. In the intro, the author says this book has been out of print since 1974, and just got back in print in June, 2002. (I just read a passing reference to it in the Nov., 2002 issue of VOGUE. First I'd heard about it.) He's there when Mick and Keith get arrested for hitting a photographer. He's there when the Governor of Rhode Island tells the chief of police to spring Mick and Keith from jail, for public safety (the waiting audience for a Stones show could riot if deprived of the Stones!). He's there to show that being on tour with the greatest rock and roll band in the world CAN, truly and believably, get mind-numbingly dull. It's an interesting inside look, by a journalist who is impressively objective. (He doesn't despise nor worship the Stones, and actually gives an interesting run down of why, at that time, the Stones actually were NOT very wealthy, despite ten years of success. That's changed since, of course.) Worth reading if you're a Stones fan.</Comment>
+         </CustomerReview>
+      </Reviews>
+      <SimilarProducts>
+         <Product>0811840603</Product>
+         <Product>1556524005</Product>
+         <Product>0823084167</Product>
+         <Product>0972370404</Product>
+         <Product>0312141165</Product>
+      </SimilarProducts>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/0821227815/webservices-20?dev-t=MY_AMZN_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>0821227815</Asin>
+      <ProductName>Tattoo Nation: Portraits of Celebrity Body Art</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>Editors of Rolling Stone</Author>
+      </Authors>
+      <ReleaseDate>08 November, 2002</ReleaseDate>
+      <Manufacturer>Bulfinch</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/0821227815.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/0821227815.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/0821227815.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$35.00</ListPrice>
+      <OurPrice>$24.50</OurPrice>
+      <UsedPrice>$17.00</UsedPrice>
+      <ThirdPartyNewPrice>$22.99</ThirdPartyNewPrice>
+      <SalesRank>127,478</SalesRank>
+      <Lists>
+         <ListId>1AFEZFPA7ABZ4</ListId>
+      </Lists>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Tattooing</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Pictorial works</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Celebrities</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Portraits</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>United States</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Photography</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Subjects &amp; Themes - Portraits</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Photoessays &amp; Documentaries</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Tattoos, Mehndi, &amp; Body Painting</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Hardcover</Media>
+      <NumMedia>1</NumMedia>
+      <Isbn>0821227815</Isbn>
+      <Availability>Usually ships within 24 hours</Availability>
+      <Reviews>
+         <AvgCustomerRating>2.25</AvgCustomerRating>
+         <TotalCustomerReviews>4</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>1</Rating>
+            <Summary>Be a rebel!</Summary>
+            <Comment>Be a rebel - look like everyone else! Another lame book from Rolling Stone.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>Beautiful Photography of American Culture</Summary>
+            <Comment>If you don't like tatoos, get this book for the wonderful photography. It portrays celebrities in their best light. It also features quotes about how each person feels about their tatoo and the reasoning and personal memories behind it. Tatoos are a growing part of American Culture, and it seems now that the peolple that are unique, are the ones that are un-inked. This a great and fun coffee-table book, and also makes an amazing gift.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>1</Rating>
+            <Summary>Photographs of the famous..Oh yes and some tattoos.</Summary>
+            <Comment>I was disappointed when I received this book. The title is very deceitful. What the book really showed was posed photographs of rock stars and actors. What was not shown were detailed photographs of tattoos, nor was there really any explanation or narrative about the individual photograph itself. The book is weak and definately not for someone interested in tattoos. However, if your interested in photographs of a few famous people, you should buy the book.</Comment>
+         </CustomerReview>
+      </Reviews>
+      <SimilarProducts>
+         <Product>0312267843</Product>
+         <Product>1560253231</Product>
+         <Product>0446670014</Product>
+         <Product>006039367X</Product>
+         <Product>0896597989</Product>
+      </SimilarProducts>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/0316754684/webservices-20?dev-t=MY_AMZN_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>0316754684</Asin>
+      <ProductName>Rolling Stone Images of Rock N' Roll</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>Editors of Rolling Stone</Author>
+      </Authors>
+      <ReleaseDate>01 November, 1995</ReleaseDate>
+      <Manufacturer>Little Brown &amp; Company</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/0316754684.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/0316754684.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/0316754684.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$50.00</ListPrice>
+      <OurPrice>$35.00</OurPrice>
+      <UsedPrice>$9.95</UsedPrice>
+      <CollectiblePrice>$15.50</CollectiblePrice>
+      <ThirdPartyNewPrice>$24.95</ThirdPartyNewPrice>
+      <SalesRank>134,188</SalesRank>
+      <Lists>
+         <ListId>2SF791ZX1QTVM</ListId>
+         <ListId>2Z3A4Q2EG9V4A</ListId>
+      </Lists>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Rock music</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Pictorial works</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Rock musicians</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Portraits</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Collections Of Photographs</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Music</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Fiction</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Rock</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Hardcover</Media>
+      <NumMedia>1</NumMedia>
+      <Isbn>0316754684</Isbn>
+      <Availability>Usually ships within 24 hours</Availability>
+      <ProductDescription>Elvis, Michael, Patti, Bruce--icons all. The &lt;I>Rolling Stone&lt;/I> portraits assembled in this book depict five decades worth of musical sensations and idols. The juxtaposition of the shots heightens the fun of flipping through the photos: A young Mick Jagger sitting under a hairdryer faces Snoop Doggy Dog, his curls caught up in a hairdresser's clips; David Bowie in a loincloth counterbalances Bj&amp;ouml;rk in a fig leaf; Chris Isaak and John Lee Hooker stand opposite one another, each in a polka-dot shirt; Jimi Hendrix and Bob Marley, side by side and enveloped in clouds of smoke. These alignments of musicians from different eras and different genres make a simple, visual statement about the transcendent power of music. Every page reveals another familiar image that transports the readers to the moment they first saw the musicians on the cover of the magazine or heard their music. The undiscovered pictures are a treat as well. Individually, these portraits expose the essence of their subjects and speak volumes about the characters that created and sustain rock and roll.</ProductDescription>
+      <Reviews>
+         <AvgCustomerRating>5</AvgCustomerRating>
+         <TotalCustomerReviews>4</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>superb music photos</Summary>
+            <Comment>an excellent collection of rock photos from rolling stone&lt;BR>beautiful work</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>Capturing The Moment</Summary>
+            <Comment>This is one of the best photographic books I have ever seen. The photographers who took these photos really captured the feeling and emotions of the artists at the time. All the classic and famous personalities of music are here, from Ike and Tina to Bob Dylan; from Elvis to Bowie to Nirvana; from The Beatles and Stones to Alice Cooper and all that lies between (too too many to list here). An excellent array of both black and white and colour shots. The close ups allow you to see into the sometimes troubled, sometimes happy, but ever changing eyes of these rock icons. The broader shots show some of these bands and performers in their most comfortable and bizarre surrounds. A worthwhile purchase, that allows you to ponder each and every photo for hours and hours. In the back is a complete copy (small version) of the photos together with a who is who. Buy the hardcover; not only is it worth the price, but it will last forever. This is easily the greatest and most comprehensive collection of rock and roll pictures in one publication!</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>courtney love is on the cover!</Summary>
+            <Comment>the best part was courtney love on the cover, and nirvana on the last page.</Comment>
+         </CustomerReview>
+      </Reviews>
+      <SimilarProducts>
+         <Product>0810982064</Product>
+         <Product>0679737286</Product>
+         <Product>0811828166</Product>
+         <Product>0821223925</Product>
+         <Product>0811829782</Product>
+      </SimilarProducts>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/0743235819/webservices-20?dev-t=MY_AMZN_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>0743235819</Asin>
+      <ProductName>Harrison</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>Editors of Rolling Stone</Author>
+      </Authors>
+      <ReleaseDate>01 May, 2002</ReleaseDate>
+      <Manufacturer>Simon &amp; Schuster</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/0743235819.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/0743235819.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/0743235819.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$29.95</ListPrice>
+      <OurPrice>$29.95</OurPrice>
+      <UsedPrice>$4.94</UsedPrice>
+      <CollectiblePrice>$15.84</CollectiblePrice>
+      <ThirdPartyNewPrice>$11.88</ThirdPartyNewPrice>
+      <SalesRank>85,847</SalesRank>
+      <Lists>
+         <ListId>T07N12L8JI1</ListId>
+         <ListId>188Z3K3GQV3XZ</ListId>
+         <ListId>1YNSDYR5FH6Z0</ListId>
+      </Lists>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Entertainment &amp; Performing Arts - General</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Harrison, George,</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>1943-</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Rock musicians</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>England</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Biography</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Rock Music</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Biography &amp; Autobiography</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Biography / Autobiography</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Composers &amp; Musicians - Rock</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Historical - British</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Rock</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Hardcover</Media>
+      <NumMedia>1</NumMedia>
+      <Isbn>0743235819</Isbn>
+      <Availability>Usually ships within 24 hours</Availability>
+      <Reviews>
+         <AvgCustomerRating>4.82</AvgCustomerRating>
+         <TotalCustomerReviews>17</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>Living With Good &amp; Bad, I Always Looked Up To You</Summary>
+            <Comment>Unlike nearly every other book on George Harrison, this is of the highest quality &amp; doesn't wander off into gossipy corridors. George's memory is well-served by the book's mature analysis of his wonderful music and its respectful portrayal of George as a human being. I feel compelled to say that when I heard of George's passing, I was extremely upset. Not only was George an amazing songwriter and guitarist, he was also (from what I gather) an extremely gentle person. The world is a much poorer place due to his departure. &lt;P>The book is finely illustrated with many rare pictures; I was delighted that it didn't gloss over George's neglected solo career. Another particular delight is the introduction penned by Mrs. Harrison. Like her husband, Mrs. Harrison is a very dignified, articulate person and I wish her the very best. Pictures of George's son (who looks just like him, by the way) are also included. Thank you for the music, George.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>GREAT BOOK! BUY IT!</Summary>
+            <Comment>This is one George Harrison that was not thrown together after his death to make a quick buck. The book is well written, full of great photos, and has a beautiful foreword written by George's wife Olivia...the book also includes personal stories of friends who were very close to George.&lt;P>It's a great book about one of the great artists of the 20th century...it's "fab" and "gear"...you should be scraping your hooter in this bloomin' book!</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>4</Rating>
+            <Summary>THE CONFLICTED ONE</Summary>
+            <Comment>Harrison is a coffee table book put out by the editors of Rolling Stone as a tribute to the late Beatles guitarist. What you have here is mostly pictures but there is text in the form of a short biography that scans over George's whole career. It features photographs from the 60s when Beatlemania was at its height and even offers commentary by the people who took those pictures. It also has pictures of his post Beatle career. It also has musical documentation of all of Harrison's output on his and other artist recordings. All of his interviews in Rolling Stone magazine are compiled in this book. &lt;P>The picture of George that emerges after reading this book is of a man who ideally lives his life according to certain religious precepts but nevertheless has to live in the material world. Left to himself, George would have painted himself as a purely spiritual being. The pettiness of the Beatles in their breakup and how shamefully they all acted, including George himself, shows that no divine being can exist in human flesh. It seems he was always conflicted between being an entertainer and being somewhat of a divine monk. I don't think he ever reconciled the two. &lt;P>An especially poignant moment is when an interviewer asks him about his relationship with John Lennon right before he was shot to death. George says that he felt John was trying to reconnect with him. He went to see him in New York and he could tell John wanted so badly to restart a relationship with him but because of his circumstances, probably Yoko's possessiveness of him, he could not communicate what he wanted to say. &lt;P>It was also apparent that time heals most wounds and that George was at peace with his Beatles past, a past which at one time he hated. He seemed resentful that all his life was judged by a span of 7 short years. Remember, he was only 27 years old at the time the Beatles broke up. Paradoxically, he missed his old band, just like John, Paul, and Ringo did. Beneath all their spats in later years, they knew they had a good situation. They were the best band on the planet.</Comment>
+         </CustomerReview>
+      </Reviews>
+      <SimilarProducts>
+         <Product>0811837939</Product>
+         <Product>031230109X</Product>
+         <Product>B0000CEB4V</Product>
+         <Product>0946719500</Product>
+         <Product>B000096BLD</Product>
+      </SimilarProducts>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/0811828166/webservices-20?dev-t=MY_AMZN_TOKEN%26camp=2025%26link_code=xm2">
+      <Asin>0811828166</Asin>
+      <ProductName>Rolling Stone: The Illustrated Portraits</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>Fred Woodward</Author>
+      </Authors>
+      <ReleaseDate>August, 2000</ReleaseDate>
+      <Manufacturer>Chronicle Books</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/0811828166.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/0811828166.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/0811828166.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$40.00</ListPrice>
+      <OurPrice>$28.00</OurPrice>
+      <UsedPrice>$6.99</UsedPrice>
+      <CollectiblePrice>$14.58</CollectiblePrice>
+      <ThirdPartyNewPrice>$16.77</ThirdPartyNewPrice>
+      <SalesRank>84,755</SalesRank>
+      <Lists>
+         <ListId>1IMI7Y9X24HSA</ListId>
+      </Lists>
+      <BrowseList>
+         <BrowseNode>
+            <BrowseName>Magazine illustration</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>United States</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>20th century</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Celebrities</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Portraits</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Pop Arts / Pop Culture</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Performing Arts</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Mass Media - Magazines</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>Popular Culture - General</BrowseName>
+         </BrowseNode>
+         <BrowseNode>
+            <BrowseName>American - General</BrowseName>
+         </BrowseNode>
+      </BrowseList>
+      <Media>Hardcover</Media>
+      <NumMedia>1</NumMedia>
+      <Isbn>0811828166</Isbn>
+      <Availability>Usually ships within 24 hours</Availability>
+      <Reviews>
+         <AvgCustomerRating>4.33</AvgCustomerRating>
+         <TotalCustomerReviews>3</TotalCustomerReviews>
+         <CustomerReview>
+            <Rating>3</Rating>
+            <Summary>The Robert Risko and Philip Burke Nineties show</Summary>
+            <Comment>I don't know if Rolling Stone didn't use any art in their early days, or if the editors of this book just figured that they had to concentrate on appealing to their contemporary audience. Anyway, these very entertaining caricatures are mostly from the late Eighties through the Nineties. Risko and Burke account for a large percentage of the total. Risko especially is good, practically the second coming of Miguel Covarrubias. There's too much Madonna and not enough Sixties, but overall this is a fine compilation.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>a great overview</Summary>
+            <Comment>this is a great collection of pictures.before Rolling Stone sold out this was a very important magazine.many great Artists are featured here.i like to remember what made the Magazine great in the first place&amp;this is one of them.</Comment>
+         </CustomerReview>
+         <CustomerReview>
+            <Rating>5</Rating>
+            <Summary>Perfect Coffee Table Book</Summary>
+            <Comment>This book has everyone from Elvis to Marilyn Manson included. The illustrations in this book are phenomenal. It is a pretty large book, all pictures for all ages. It is the perfect gift book to anyone who has lived in the 70's, 80's or 90's. I have a copy sitting on my coffee table and everyone who comes over picks it up and cannot put it down until they have seen every picture. :-)</Comment>
+         </CustomerReview>
+      </Reviews>
+      <SimilarProducts>
+         <Product>0316754684</Product>
+         <Product>0810982064</Product>
+         <Product>1880418568</Product>
+         <Product>B00003CXC5</Product>
+      </SimilarProducts>
+   </Details>
+</ProductInfo>

Added: packages/libnet-amazon-perl/branches/upstream/current/t/canned/upc_zwan.xml
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/t/canned/upc_zwan.xml	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/t/canned/upc_zwan.xml	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?><ProductInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xml.amazon.com/schemas2/dev-lite.xsd">
+
+   <TotalResults>1</TotalResults>
+   <TotalPages>1</TotalPages>
+   <Details url="http://www.amazon.com/exec/obidos/ASIN/B00007M84Q/webservices-20?dev-t=YOUR_AMZN_TOKEN">
+      <Asin>B00007M84Q</Asin>
+      <ProductName>Mary Star of the Sea</ProductName>
+      <Catalog>Music</Catalog>
+      <Artists>
+         <Artist>Zwan</Artist>
+      </Artists>
+      <ReleaseDate>28 January, 2003</ReleaseDate>
+      <Manufacturer>Warner Brothers</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B00007M84Q.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B00007M84Q.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B00007M84Q.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$18.98</ListPrice>
+      <OurPrice>$13.99</OurPrice>
+      <UsedPrice>$7.50</UsedPrice>
+   </Details>
+</ProductInfo>

Added: packages/libnet-amazon-perl/branches/upstream/current/t/canned/wishlist1.xml
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/t/canned/wishlist1.xml	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/t/canned/wishlist1.xml	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?><ProductInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xml.amazon.com/schemas2/dev-lite.xsd">
+
+   <Details url="http://www.amazon.com/exec/obidos/redirect?tag=webservices-20%26creative=YOUR_AMZN_TOKEN%26camp=2025%26link_code=xm2%26path=ASIN/1882114981">
+      <Asin>1882114981</Asin>
+      <ProductName>Free Software, Free Society: Selected Essays of Richard M. Stallman</ProductName>
+      <Catalog>Book</Catalog>
+      <Authors>
+         <Author>Richard M. Stallman</Author>
+         <Author>Lawrence Lessig</Author>
+         <Author>Joshua Gay</Author>
+      </Authors>
+      <ReleaseDate>01 October, 2002</ReleaseDate>
+      <Manufacturer>Free Software Foundation</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/1882114981.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/1882114981.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/1882114981.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$24.95</ListPrice>
+      <OurPrice>$19.96</OurPrice>
+      <UsedPrice>$18.14</UsedPrice>
+   </Details>
+</ProductInfo>

Added: packages/libnet-amazon-perl/branches/upstream/current/t/canned/wishlist10_1.xml
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/t/canned/wishlist10_1.xml	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/t/canned/wishlist10_1.xml	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8"?><ProductInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xml.amazon.com/schemas2/dev-lite.xsd">
+
+   <Details url="http://www.amazon.com/exec/obidos/redirect?tag=webservices-20%26creative=YOUR_AMZN_TOKEN%26camp=2025%26link_code=xm2%26path=ASIN/B00008AJJ8">
+      <Asin>B00008AJJ8</Asin>
+      <ProductName>Samsung V205 Phone (T-Mobile)</ProductName>
+      <Catalog>Wireless</Catalog>
+      <Manufacturer>Samsung</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B00008AJJ8.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B00008AJJ8.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B00008AJJ8.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$399.99</ListPrice>
+      <OurPrice>$399.99</OurPrice>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/redirect?tag=webservices-20%26creative=YOUR_AMZN_TOKEN%26camp=2025%26link_code=xm2%26path=ASIN/B00006RVH4">
+      <Asin>B00006RVH4</Asin>
+      <ProductName>Flipster 128 MB Personal Multimedia MP4 Player</ProductName>
+      <Catalog>Electronics</Catalog>
+      <Manufacturer>PoGo! Products</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B00006RVH4.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B00006RVH4.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B00006RVH4.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$449.00</ListPrice>
+      <OurPrice>$379.99</OurPrice>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/redirect?tag=webservices-20%26creative=YOUR_AMZN_TOKEN%26camp=2025%26link_code=xm2%26path=ASIN/B00006L9DW">
+      <Asin>B00006L9DW</Asin>
+      <ProductName>Motorola V60i Phone (AT&amp;T)</ProductName>
+      <Catalog>Wireless</Catalog>
+      <Manufacturer>Motorola</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B00006L9DW.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B00006L9DW.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B00006L9DW.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$199.99</ListPrice>
+      <OurPrice>$199.99</OurPrice>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/redirect?tag=webservices-20%26creative=YOUR_AMZN_TOKEN%26camp=2025%26link_code=xm2%26path=ASIN/B0000668GF">
+      <Asin>B0000668GF</Asin>
+      <ProductName>Motorola V60g Phone (T-Mobile)</ProductName>
+      <Catalog>Wireless</Catalog>
+      <Manufacturer>Motorola</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B0000668GF.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B0000668GF.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B0000668GF.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$199.99</ListPrice>
+      <OurPrice>$199.99</OurPrice>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/redirect?tag=webservices-20%26creative=YOUR_AMZN_TOKEN%26camp=2025%26link_code=xm2%26path=ASIN/B00006LEN3">
+      <Asin>B00006LEN3</Asin>
+      <ProductName>Motorola V70 Phone (T-Mobile)</ProductName>
+      <Catalog>Wireless</Catalog>
+      <Manufacturer>Motorola</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B00006LEN3.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B00006LEN3.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B00006LEN3.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$249.99</ListPrice>
+      <OurPrice>$249.99</OurPrice>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/redirect?tag=webservices-20%26creative=YOUR_AMZN_TOKEN%26camp=2025%26link_code=xm2%26path=ASIN/B00008BQZX">
+      <Asin>B00008BQZX</Asin>
+      <ProductName>Motorola T720i Phone with Camera Attachment (T-Mobile)</ProductName>
+      <Catalog>Wireless</Catalog>
+      <Manufacturer>Motorola</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B00008BQZX.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B00008BQZX.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B00008BQZX.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$249.99</ListPrice>
+      <OurPrice>$249.99</OurPrice>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/redirect?tag=webservices-20%26creative=YOUR_AMZN_TOKEN%26camp=2025%26link_code=xm2%26path=ASIN/B00006IZB0">
+      <Asin>B00006IZB0</Asin>
+      <ProductName>Sony Ericsson T68i Phone (T-Mobile)</ProductName>
+      <Catalog>Wireless</Catalog>
+      <Manufacturer>Ericsson</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B00006IZB0.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B00006IZB0.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B00006IZB0.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$299.99</ListPrice>
+      <OurPrice>$99.99</OurPrice>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/redirect?tag=webservices-20%26creative=YOUR_AMZN_TOKEN%26camp=2025%26link_code=xm2%26path=ASIN/B00006LEN1">
+      <Asin>B00006LEN1</Asin>
+      <ProductName>Samsung S105 Phone (T-Mobile)</ProductName>
+      <Catalog>Wireless</Catalog>
+      <Manufacturer>Samsung</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B00006LEN1.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B00006LEN1.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B00006LEN1.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$299.99</ListPrice>
+      <OurPrice>$299.99</OurPrice>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/redirect?tag=webservices-20%26creative=YOUR_AMZN_TOKEN%26camp=2025%26link_code=xm2%26path=ASIN/B00000JDF8">
+      <Asin>B00000JDF8</Asin>
+      <ProductName>Belkin F2N025-10 VGA HDDB15M/F Monitor Extension Cable (10 FT)</ProductName>
+      <Catalog>Electronics</Catalog>
+      <Manufacturer>Belkin Components</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B00000JDF8.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B00000JDF8.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B00000JDF8.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$11.99</ListPrice>
+      <OurPrice>$8.08</OurPrice>
+      <UsedPrice>$1.97</UsedPrice>
+   </Details>
+   <Details url="http://www.amazon.com/exec/obidos/redirect?tag=webservices-20%26creative=YOUR_AMZN_TOKEN%26camp=2025%26link_code=xm2%26path=ASIN/B000068PE8">
+      <Asin>B000068PE8</Asin>
+      <ProductName>Cornea MP704B 17" LCD Monitor</ProductName>
+      <Catalog>Electronics</Catalog>
+      <ReleaseDate>08 October, 2002</ReleaseDate>
+      <Manufacturer>Cornea Systems, Inc.</Manufacturer>
+      <ImageUrlSmall>http://images.amazon.com/images/P/B000068PE8.01.THUMBZZZ.jpg</ImageUrlSmall>
+      <ImageUrlMedium>http://images.amazon.com/images/P/B000068PE8.01.MZZZZZZZ.jpg</ImageUrlMedium>
+      <ImageUrlLarge>http://images.amazon.com/images/P/B000068PE8.01.LZZZZZZZ.jpg</ImageUrlLarge>
+      <ListPrice>$429.99</ListPrice>
+      <OurPrice>$370.49</OurPrice>
+      <UsedPrice>$350.00</UsedPrice>
+   </Details>
+</ProductInfo>

Added: packages/libnet-amazon-perl/branches/upstream/current/t/canned/wishlist10_2.xml
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/t/canned/wishlist10_2.xml	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/t/canned/wishlist10_2.xml	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ProductInfo><ErrorMsg>There are no exact matches for the search.</ErrorMsg></ProductInfo>

Added: packages/libnet-amazon-perl/branches/upstream/current/t/init.pl
===================================================================
--- packages/libnet-amazon-perl/branches/upstream/current/t/init.pl	2006-02-25 20:44:54 UTC (rev 2200)
+++ packages/libnet-amazon-perl/branches/upstream/current/t/init.pl	2006-02-25 20:45:24 UTC (rev 2201)
@@ -0,0 +1,19 @@
+
+# common routines used in tests
+
+######################################################################
+# handle canned responses
+######################################################################
+sub canned {
+    my($base, $file) = @_;
+
+    if(! exists $ENV{NET_AMAZON_LIVE_TESTS} ) {
+        $file = File::Spec->catfile($base, $file);
+        open FILE, "<$file" or die "Cannot open $file";
+        my $data = join '', <FILE>;
+        close FILE;
+        push @Net::Amazon::CANNED_RESPONSES, $data;
+    }
+}
+
+1;




More information about the Pkg-perl-cvs-commits mailing list