It should be pointed out that this module is no longer all that useful, as Dancer's Logger interface now automatically serialises references passed to it, so you can, without any extra plugins or anything, say e.g.:
debug "Data is", \%data;
I will probably release a version of this module with a deprecation notice at some point.
This module in its current form is of very little use.
I took on maintainership to fix some bugs and get it working; unfortunately, since Twitter no longer allows authentication with usernames and passwords, it needs some fairly major reworking to either authenticate via OAuth, or replace authentication with a simple mechanism to just add a list of users to follow.
I'll try to work on it when I have time; patches welcome.
YAWF (Yet Another Web Framework), but looks promising so far.
I like Catalyst, but also find it rather bloated and overkill for small web apps, and to some degree feel like it forces me to code "the Catalyst way".
Dancer, on the other hand, strikes me as a smaller, easier framework, to which I can hand over drudgery, but maintain control and write my own code, my way.
Friendly, responsive and approachable developers also instils confidence in this project.
I think Dancer will be my future first choice for smaller webapp projects.
[EDIT: For disclosure, I'm now part of the Dancer core dev team; at the time of writing this review I was not, I was just an interested user; since then, I started contributing, and became a member of the team. I decided I should leave the comment as it stands, but add this disclosure to explain.]
[EDIT 2: editing the review has changed the datestamp to today's date. For reference, the original review was posted 2010-02-10 07:35:39]
Excellent stuff - makes reading data from spreadsheets dead simple, without caring what kind of spreadsheet you've been given.
Even if you're writing code with the expectation of it only ever being given an Excel spreadsheet, it still makes sense to use this module for its interface, and so that, if your code is expected to deal with other spreadsheet formats in future, it will Just Work.
Excellent way to make database work less tedious; writes your SQL for you, so you don't have to think about it.
May start to become awkward when your needs become more in-depth and you need big hairy queries, but for your average database work, this will handle it all with ease, and the interface is sane enough to avoid making you think.
Good stuff - just what I was looking for. Generating a salt, hashing a password with it, and validating it is pretty simple stuff, but common stuff that gets re-written far too often; this module takes care of it nicely.
A clean and simple way to describe a set of files you're interested in, and get a list of them. Way nicer to use than File::Find.
The price for this simplicity is that the module chugs away constructing the entire list of files first, before you can then work with them. Fine on a reasonably small set of files, but if you're going to be working with a lot of files, this can be a pain.
An excellent module to handle the fairly common task of extracting data from a HTML table; no need for ugly scraping code, you can just tell this module "Here's some HTML; find me a table with headings named $headers, then get me the data. If the page changes, no problem - as long as the table still has the same column headings (even if their order changes), it'll still be found with no issues.
You can also identify the table you want by name/id or various attributes, if you need to.
An essential part of your toolkit for screen-scraping.
The cleanest, sanest module for manipulating dates within Perl I've seen so far - a DateTime object has become my first choice for most date operations within Perl.
It's slightly slow (on one of my systems, perl -MDateTime took about 0.4s, compared to 0.1s for Date::Calc), but in most cases, I think it's worth the impact for easy, clean code. So, DateTime is my first choice, Date::Calc is my choice when speed is of the essence, and for working with date ranges, I'll occasionally turn to Date::Range.
A nice clean way to handle ranges of dates. DateTime is my normal choice for date maths, but I've found this module good for clean and easy ways to, for instance, get a list of dates between $start_date and $end_date with minimal effort.
Excellent stuff. Does exactly what I wanted to do, and with a sane interface too.
I think the documentation could do with a bit of cross reference though; for instance, when mentioning that a Net::Google::Calendar::Entry object is expected or emitted, a link to the appropriate documentation would be nice. (Yes, it's easy to go find it yourself, but easier still if there's a clickable link :) )
I was fed up with using Getopt::Long and was looking for a decent Getopt::* module which could flexibly handle options the way I wanted them, and handle targets neatly too, regardless of the order they're given (e.g. ./script --option=foo filename, or ./script filename --option=foo), and most importantly, just get out of the way and DWIM.
Getopt::Lucid does everything I want, including verifying that required params were given, and as the name would suggest, allows the option-grabbing code to clearly show at a glance what options it takes.
Excellent stuff, really useful when writing decent test scripts. For code that relies on external systems, mocking up whatever objects it uses to communicate with them makes in-depth, reliable testing easy.
Just tried Template::Toolkit after using HTML::Template for a fair while. H::T is good, but got in my way a little (especially when wanting to loop through an array - having to turn that simple array into an array of hashrefs was annoying).
Got T::T installed and converted over a (admittedly fairly small) project to use T::T within about half an hour and... my God, it has no right to be *this* good :)