This is a terrible implementation of a bad idea. Regular expressions for HTML parsing are extremely difficult to get right. This module will erase content including entities, instead of converting them which is trivial which HTML::Entities, and markup like "1 < 2;" while bad, plenty of HTML in the wild contains stuff like this.
It is trivial to strip HTML yourself with HTML::TokeParser or HTML::TokeParser::Simple or XML::LibXML or ...
The code makes it look like it should have been in the Acme namespace. 12 subs all synonyms for calling, via goto, the real routine.
Do *not* put this module into production code. This is the sort of code that gives Perl and the CPAN a bad name.
Update: I'm not hating, I'm protecting other users from taking this at face value or learning to prefer quick'n'dirty over correct. I posted this review after the module was recommended on the TT2 list, which is widely read.
Here's the real rub...
First, self-documenting and without misleading extra substitution modifiers; 40 characters long without any dependencies-
$naively_stripped_html =~ s/<\w+[^>]+>//g;
Now, obfuscated by nature of being hidden in a module; 100+ chars, adding a pointless dependency to boot-
use HTML::Obliterate qw(extirpate_html);
my $html_less_version_of_string = extirpate_html( $html_code_string );
It's now 13 aliases to the same sub? Again, if it were an Acme module it would be amusing.
This module is just terrific. I've benchmarked it against other data serializers and, at least in simple cases, it's faster than them all, including Storable. Making JSON a more attractive format for configuration files. If I'd known about it sooner I could have saved many headaches trying to debug roundtripping data and reference problems.
This is *&Â¢%ing hot, man. My only beef so far is that it silently does exactly what it's told. In other words, if you have a partial/manual Schema instead of one from Loader or a completely detailed hand-tooled version, you will get broken definitions. Obviously there is nothing that can be done about without wrapping back around the Loader and asking for two sets of DSNs (real + new); and that's probably outside the scope of this tool. It would be nice though if it croaked noisily before it wrote out broken SQL. Many first timers might have no idea what's going on and might drive up blind alleys for days trying to figure it out.
While it's a great idea, fun, etc, and the name alone is a good indicator of its functionality, it should not be in the Dev:: space. It should be in the Acme:: space. If it were there, I'd give it a 4 or 5.
I can't believe it took me this long to get around to reviewing this. It's all been said already so I can only add: When I'm doing a new project I'm never sure exactly what framework, family, approach, or logic I'll settle on using but the templating language is never in question. It's TT2.
Really surprising. I'm used to packages like this (that do lots of things) being tricky to install. Catalyst went right in without a question or a dependency to follow (might be I just happened to have everything underneath; OS X 10.2). Had the skeleton of an app set up and running with the built-in server in 30 seconds.
This is similar to things I've been doing on my own--URI dispatching and such--but *so* much better rounded out and easy to extend; reuse. The idea that what I'm writing for a vanilla .cgi is all set to flip over to mod_perl at any time is just flabergasting. I haven't finished anything with Catalyst yet but if it continues to be this slick I'm going to rewrite three websites with it.
With CDBI and TT underneath, web development starts to feel more like recess than work.
Holy crap I like this module. If you haven't fired it up, you're hurting yourself. As your friend, I'm telling you, "Try it now." I can't imagine ever writing another script, program, or package without using it.
Update: In retrospect I have hardly used this, it's overkill and brings in some scary perl magick, but it is extremely handy when doing one-offs or tests.
Really excellent piece of software. It has saved my sanity for organizing personal projects (programming and otherwise). And it was so easy to set up, I actually have no recollection whatsoever of doing it (it was two months ago).
The one thing I haven't enjoyed is its revision system's reliance on shell stuff. I recently moved computers, and the only way to prevent the 'ci' RCS from erroring out on updates to existing files was to erase all of the RCS placeholder files. I think it was because one Apache was running as 'nobody' and the other as 'www' but I don't know for sure.
I can't wait for more of the internals to be pure Perl(C) (on top of DB_File too or somesuch). Also I looked at hacking ispell into it but I think it's a job for a better or more dedicated programmer. When it has those, I'll gladly give it 5 stars.