Rate a distribution
Find a distribution you would like to review:
Recent reviews (RSS feed)
For years I have used an absolutely stock CPAN::Mini setup to create and update a minicpan repository on a succession of laptops. That worked quite well, particularly with respect to development and testing of search.cpan.org/dist/CPAN-Mini-Visit-....
Now I'm in a position where, on behalf of Perl 5 Porters, I am examining the relationship between Perl 5 blead and the latest versions of CPAN distributions. For that purpose, CPAN-Mini's default setting of "retain the last version of a distro for each author doing a release" results in many different versions of distros such as DBIx-Class which have had different releasors over the years.
So I'm now going to try CPAN-Mini-LatestDistVersion and have added that as the value for 'class' in my .minicpanrc file. As I type, I'm populating a new minicpan repository. The acid test will come when I type 'minicpan' to update the repository and some distro has had a new release from a different releasor.
This pure-perl module creates a shallow copy of the object instead of directly removing blessing from the same object (which requires XS). Acme::Damn is the more direct counterpart of bless().
The way to actually use this Module is given in the SOAP::WSDL::Manual.
Without that, good luck figuring it out. With that, it is much less difficult figuring this out. I was sending SOAP requests and getting responses about 2 hours after I read SOAP::WSDL::Manual.
This is true for modern versions, and 2.00.10, which is what's on my RHEL5 boxen.
2016-12-14 - I no longer use this package since it does not work across upgrades. When you update the script the lock goes with the inode not the script. I now use Lazy::Lockfile. I plan to switch to systemd when we move to el7.
2011-10-29 - I think this package is great. Adding just one line gets you up and running. If you run crons against a database, there is no easier way to ensure that you never walk on yourself.
Very handy module that saves messing around with file paths, which is often error prone e.g. handling symlinks and different OSes such as VMS.
Clear documentation, easy to use, and works well for me updating a legacy codebase.
The only slight niggle I had was on old code doing "use File::FindLib 'VERSION.pl';" and finding the variable it set ended up in the File::FindLib:: namespace rather than main::.
The module does its job in a basic way but doing serious work with it is frustrating. I have made heavy use of the module in Locale::XGettext and that really made me dream of a modern alternative to Locale::PO.
The class method "load_file_ashash" (yes, "ashash" is not a typo!) predates message contexts in PO files. Do not use it! You will lose data! This cannot be fixed. You should just be aware of it.
The central methods "msgid()", "msgstr()", etc. receive an unquoted string argument when invoked as a setter but return the quoted argument, when invoked as a getter. This surprising behavior makes working with the module cumbersome and inefficient.
Prepending the named arguments in the constructor with hyphens is so much 1995! The hyphens should at least be optional.
There is almost no consistency checking. The module lets you happily create PO entries without a msgid. There are no high-level methods for manipulating the PO header of a file. There are no methods for merging two PO entries (crucial for the creation of a PO file).
Last but not least, the interface for creating a PO entry with plural forms is really awkward and not well documented.
As I said in the beginning, the module does its job (when used the right way). A lot of people have improved the module over the years, so that it now also supports newer PO features like message contexts or plural forms. But the design problems of Locale::PO cannot be fixed.
It takes arrays as subroutine arguments which will result in slowness when the data is huge. I strongly advise metacpan.org/pod/List::MoreUtils as an alternative.
Use Digest::SHA instead. In general, there is no reason in using Digest::SHA1 over Digest::SHA. The latter is a core Perl module, more updated, and implements the other algorithms while the former only implements SHA-1 which is now deprecated.
The "checksum" (basically just adding 16-bit words) is too simplistic to be a real checksum or to be practically useful. Even MD5 or CRC32 is infinitely better.
Big dependency tree having to install Moose. Otherwise, it just works. Good (complete) example file helps a lot. Thank you!
Excellent approach. This module as simplified the code I use to access MongoDB tremendously.
I've been trying to debug an issue with a CPAN module which was shown up by CPAN testers. At the moment, the testers' reports are not available on the web. The problem seemed to be with older versions of Perl, but despite much effort I was unable to install them to find out what was wrong. I have never installed or even tried perlbrew before today, but in desperation I tried it out.
Thanks to perlbrew I was able to install a Perl 5.12.5 and find the errors in my CPAN module very quickly. I'm very impressed with how easy it was and how it managed to install the old version of Perl on my system where I wasn't able to. The whole system of shell replacements is just ideal for this kind of work.
Very good job! Thanks.
Before this package was adopted by a new author, I believe it was a good option for dealing with JSONRPC APIs. As it stands now, people writing Perl client software for JSONRPC are not as well served as they used to be. The module has deprecated JSON::RPC::Client, renamed that to JSON::RPC::Legacy::Client and pegged it to JSONRPC v1. I would guess that more people write client code than set up servers, so this is an odd direction to go. Such is life, however.
I recently needed to write some code to communicate with a production service that offers a JSONRPC v2 interface. Looking around, the best option I could find was LWP::UserAgent + JSON::RPC2. Based on prior experience with JSON::RPC I had not expected to roll my own client, and I was not particularly happy about it. I have not rated this package since I did not use it, and just leaving this as a comment.
Still works, partially, but in general out of date. For example, to get post the deprecated metaWeblog.getPost API method is still used instead of the newer wp.getPost call (which understandably is only introduced in WordPress 3.4, while this module is last updated with WordPress 2.8.4). And apparently wordpress.com doesn't return post_content anymore when you use metaWeblog.getPost.
Luckily, performing XMLRPC request directly is easy enough. Just use XMLRPC::Lite and peruse the Wordpress documentation here: codex.wordpress.org/XML-RPC_WordPress...
I'd have loved DBIx integration, though I understand why that wouldn't work out the same.
It's simply the best way to visualize the perl variable. Sorted keys, color and many more.
This module is essentially a super-optimised PSGI server. Although this sort of micro-optimisation is not necessarily useful for most web applications, the way this module works is very interesting and might have some great niche applications.
EDIT: My previous review stated that this module was not being maintained, but now AUDREYT is fixing the outstanding issues and merging pull requests, so that is no longer a concern.
Any drawback to say is that, it supports OO method only. Should be great if functions are allowed to call in procedural method.
While the documentation could be vastly improved, this is still a fantastic tool if you can get it working.
It uses the Google Discovery API to allow you to interact with most (all?) Google APIs with a single, consistent interface.
My new favorite Levenshtein distance module. It's as fast (if not faster) than Text::Levenshtein::XS and can provide a speed boost if you don't care about distances above a certain limit. Which I think in many cases is true.
An excellent debugging and exploration tool. My first run on one of my modules showed me things I didn't expect, and that I'll probably fix soon. I look forward to using it more.