Amazon-SQS-Simple is really simple to use. A couple of minutes reading the Pod and getting acquainted with the Amazon SQS is enough to get an working example.
The only thing that I missed was an updated Pod, which seems to be (unfortunately) outdated regarding the features the distribution already has.
For instance, quoting the Pod: “This version of Amazon::SQS::Simple defaults to work against version 2009-02-01 of the SQS API.”
Checking the code is easy to see that the defaul is “SQS_VERSION_2012_11_05”, so the Pod is outdated.
our $DEFAULT_SQS_VERSION = SQS_VERSION_2012_11_05;
our @EXPORT = qw(SQS_VERSION_2012_11_05 SQS_VERSION_2009_02_01 SQS_VERSION_2008_01_01);
Also, something that I missed is information about long pooling support or not (which seems to be available for usage, specially because Amazon-SQS-Simple is up to date with Amazon SQS spec).
The REST::Client works fine and it's easy to use.
Since it uses LWP under it, you can customized it very easily.
The only thing that I missed was a Pod description about setting SSL options with it, but this is probably something to be checked in LWP itself. Anyway, I believe this usage is common enough to have a specific method to disable certificate checking. I solved it by doing a simple:
my $client = REST::Client->new();
$client->getUseragent()->ssl_opts( verify_hostname => 0 );
But as I said, I had to go through LWP::UserAgent to get that and well... there are a lot of options to set SSL/TLS with new() parameters, adding another one would do no harm.
I'm a strong believer that the better way to teach something is to give example: the documentation doesn't have one.
The interface is not easy to use: if I have to provide a function reference and the documentation describes the interface of it (expected parameters and return values) that means that the distribution should have at least a implementation, even if very basic.
The distribution does not includes any tests at all, which contributes for poor documentation (no examples at all).
If you want to show any activity at the terminal while working on something that takes a while to work, this distribution will work greatly!
The only issue that I had is regarding using the options rotate and time: if I disable the time with time => 0 (at least, I think this is a boolean value because the documentation does not explains it), the time count is disable but the output becames messy.
Lack of documentation is a big issue since I'm not sure which should be the expected behaviour, but disabling time count seems to cause a bug.
I'm using FSA-Rules for one of my open source projects (code.google.com/p/siebel-monitoring-t... ) for parsing output and I would probably would be in trouble without this module.
I must say that this is the first time that I'm using a state machine for a parser, so this reviewed is based on a newbie point of view related to state machines.
The distribution works as expected. It looks simple to use, but the lack of good examples in the documentation make it hard to create some working code. Documentation really lacks an example to GraphViz when using the graph() method. It is really cool to have such functionality but again the lack of documentation makes life harder. Looks like it needs a review anyway since GraphViz is deprecated in favour of GraphViz2.
The API is OK, but could be improved in the sense that after adding new states, code becomes harder and harder to read since the object is created with a big data references (hash and array references mixed). It would be great if the new states could be added just as new created objects (could be even greater if I could add them Perl modules in a directory and then they could be loaded during execution time).