CPAN is an acronym for
Comprehensive Perl Archive Network, a large archive of software written in
Perl, including thousands of useful modules that can save a programmer weeks of effort.
FAQ
- RSS : CPAN Ratings: Recent reviews
MojoliciousRating: 5 stars
I love this framework as it has anything 'web' that I would ever need to do.
The one thing I hope to see eventually, as a newcomer to perl powered websites (that didn't use CGI.pm; I use rails & php personally and for work I use perl for *nix backend engineering tasks) is a mojocast or tutorial that does the 'hello world' of "$newMVCorFrameworkX" powered sites - the blog example(or weblog if you prefer) done via a full(not lite) mojolicious app.
The mojocasts are definitely a fantastic learning experience and that should be a listed feature of this framework over others.
Thank you for making such a wonderful framework (and thank you to the creator of the mojocasts - I can't wait until it makes me pie too)!
Google-CheckoutRating: 5 stars
Great API for great service ;)JavaScript-SpiderMonkeyRating: 5 stars
I tried to install other module JavaScript
But didnt work.
JavaScript::SpiderMonkey was a breeze and saved my life.WWW-Facebook-APIRating: 5 stars
Not just a review, but a comment for those thinking this Module is dead. You can STILL use it with facebook with no problems. You simply need to:
my $auth = eval {
WWW::Facebook::API->new(
desktop => 0,
server_uri => 'https://api.facebook.com/restserver.php?access_token=' . $session->{access_token},
server_uri needs a modified version of restserver.php where you need to pass the access_token you obtain from the OAuth2 dance by parsing the signed_request.
Provided for reference.
sub parse_signed_request {
# ----------------------------------------------------
#
my ($expected_sig,$decoded_payload,$json,$sig,$encoded_sig,$payload,$data,$signed_request);
$signed_request = shift;
$json = JSON::XS->new->ascii->pretty->allow_nonref;
($encoded_sig, $payload) = split(/\./,$signed_request,2);
# Decode the data
$sig = urlsafe_b64decode($encoded_sig) if $encoded_sig;
$data = $json->decode(urlsafe_b64decode($payload)) if $payload;
if ($data->{algorithm} ne 'HMAC-SHA256') {
facebook_warnings("Unknown algorithm. Expected HMAC-SHA256");
return;
}
# check sig
$expected_sig = hmac_sha256($payload, $SECRET);
if ($sig ne $expected_sig) {
facebook_warnings("Bad Signed JSON signature!");
return;
}
$data->{encoded_sig} = $encoded_sig;
return $data;
}
DBIx-Class-Schema-LoaderRating: 5 stars
Great tool!Net-Flickr-Backup
Rating: 5 stars
Once I figured out all the authentication stuff it was super easy to use and I managed to back up all my Flickr photos onto my computer before I deleted them all from Flickr :-) Thanks!
4/5 for documentation because the "flickr.auth_token" configuration item was pretty tricky to figure out and the docs weren't much help. Here's some notes from when I did it in May 2012 - your mileage may vary if it is after that date when you read this ;-)
=======================================================================
1. Create a new App
Now you have an API key and an API secret
-----------------------------------------------------------------------
2. Set up the App with an arbitrary callback URL
2.1 Go to your profile page's sharing page (http://www.flickr.com/account/sharing/)
2.2 Click on your API key link to go to your App's page
2.3 Click through to your Backup app
2.4 On the right in the "admin" section go to "edit authentication flow"
2.5 Add any old URL
-----------------------------------------------------------------------
3. Authorize the App
3.1 Create config.ini with a block [flickr] that contains api_key and api_secret
3.2 Run ./get_auth_token.pl
3.3 Visit the URL and authorize the App by following the instructions
3.4 Get the 'frob' parameter's value from the callback URL you end up at
-----------------------------------------------------------------------
4. Get an auth_token
4.1 Visit the Flickr API Explorer for flickr.auth.getToken (http://www.flickr.com/services/api/explore/flickr.auth.getToken)
4.2 Add the frob from 3.4 above and submit the form with the 'Call Method...' button
4.3 Copy the value between the tags into the config.ini as flickr.auth_token
-----------------------------------------------------------------------
5. Set up the rest of your config.ini
Follow the instructions from the Net::Flickr::Backup POD
NOTE - the default of 'fetch_original=true' will fail if you do not have a
Flickr Pro account, as Flickr does not give you access to your original photos
unless you have a Pro account.
-----------------------------------------------------------------------
6. Run ./do_backup.pl
=======================================================================
If this or something similar could be added to the POD it would be 5/5 all the way!AnyEvent-HTTP-LWP-UserAgentRating: 5 stars
Saved lot of Time for me. Thanks!Proc-ProcessTableRating: 1 stars
As others have said, 0.45 is broken w/o threads. Would be great if this module could be maintained or if another module took its place.
List-MoreUtilsRating: 5 stars
very good for old version of Perl
I use instead of ~~
folowing:
use Modern::Perl;
use List::MoreUtils qw(any);
my @list=qw{boots balls smelt};
my $search_value='balls';
my $not_found_value='gnome';
foreach my $sv($search_value,$not_found_value){
if (any { $_ eq $sv } @list) {
print "$sv found\n";
}else{
print "$sv not found\n";
};
}Const-FastRating: 5 stars
I just found this module on CPAN while searching on another topic and was so pleased. Have been using Readonly for years to do constants and as the author of Const::Fast mentions in the documentation Readonly can have some weird behavior due to its internals which I'd become rather familiar with after so long :-)
I just took an entire application and swapped Readonly for Const::Fast and everything worked out-of-the-box, the only additional things I had to fix were things I was doing incorrectly in my code like accidentally autovivifying read-only hash values during tests that Readonly didn't notice :-) LWP-CurlRating: 3 stars
An excellent idea!
cURL is a great HTTP library, but for some reason scripting language bindings for it (PHP and Perl are the ones I've tried) pretty much exactly follow the cURL C API, which is pretty horrible.
LWP-Curl takes WWW::Curl::Easy and wraps it in the LWP interface which should be already familiar to pretty much anyone who's done any WWW scripting in Perl.
It's not a complete implementation of the LWP API, but the TODO section of the documentation notes that this is planned.
Marked it down on the "overall" score because Makefile.PL does not include correct dependency information. For example it lists WWW::Curl::Easy as a "build_requires" dependency, when it's actually a run-time dependency.LWP-CurlRating: 5 stars
GREAT module. Best of the curl modules IMO. Used it for some middleware at my fortune100 company, and everybody is happy.libwww-perlRating: 5 stars
This is by far the sanest HTTP client implementation I happened to come by. Makes simple things easy, yet leaves you in control.
It's surprising how many clients don't even understand response code classes (is_success, is_redirect, is_error, ...) don't grok Encoding headers or implement subrequests after redirects or authentication sanely. This one does very well.
Since a couple of versions ago it implements, in addition to common synchronous interface, callback-oriented API that's handy for handling streaming responses.
Existence of this module alone is a good case for using Perl to implement a Web client.Mail-BoxRating: 5 stars
As a previous reviewer said, this does it all. It's not the easiest module to get started with, but once you've followed a few examples, it becomes natural.
The documentation is excellent, as is the support and response to bugs.
Dist-Zilla-Plugin-EOLTestsRating: 2 stars
This module has been forked into Dist::Zilla::Plugin::Tests::EOL that has some fixes.Business-PayPal-NVPRating: 2 stars
It works, I guess, but the distribution adds little value to mere LWP, funnelling everything through AUTOLOAD without request-validity checks.
ChloroRating: 5 stars
This HTML form module doesn't try to do everything for you, and thus avoids the primary reason most other form modules suck. (In his blog post on the creation of Chloro, Dave quotes Matt Trout as saying "form modules are... satan". Never have truer words been said.)
This is a pretty simple HTML form validation engine built on Moose. At its core, you define forms as classes using Moose types for field validation. It makes you design in terms of data, not the form presented to the user. It focuses on delivering a strong validation system, and leaves the HTML generation to other facilities better suited to the task (like, say, the templating system you almost surely already have in your application).
Even in its alpha state, I find it preferable to the other options in this domain on CPAN, enough so to use it in at least one production application.
I find that a lot of Dave Rolsky's modules tend to work their way into a lot of my projects, because they are all pretty well done and tend to be pretty ubiquitous in their use. Chloro is no exception.App-GitHub# my own distData-UtilRating: 5 stars
This module implements a bunch of very useful functions. By using them I was able to convert lots of spaghetti code into very readable code. During the adoption I was even able to spot one or two bugs that were lurking latent in my code. I highly recomend Data::Util.Finance-Currency-Convert-WebserviceXRating: 5 stars
Simple, no-fuss interface, recommended. As mentioned in the doc, the alternatives have some downsides: Finance::Currency::Convert::Yahoo is based on web scraping while ::XE has usage limits.