If I understand it correctly, "Unknown error" results when a require fails in a way that should have set $@ but didn't.
You can often get to the actual error by feeding perl directly the .pm file (.../Vendor/Amazon.pm or BarnesNoble.pm, in this case). You should report this using perlbug.