Acme-CPANModules-Import-CPANRatings-User-stevenharyanto
view release on metacpan or search on metacpan
only implementation where I've reached 2048 :-) ). <br><br>One tip:
enlarge the fonts of your terminal emulator (e.g. Ctrl-+ on Konsole)
until it's big and convenient enough.
App::D
Author: BESSARABV <https://metacpan.org/author/BESSARABV>
As an alternative, one can also do: <br><br>alias d=' <br><br>TZ=UTC
date; # show date in UTC <br><br>date ; # show date in local
timezone <br><br>cal -3 ; # show monthly calendar for curmon-1,
curmon, curmon+1 <br> ' <br><br>
Getopt::Long
Author: JV <https://metacpan.org/author/JV>
Having worked for quite some time with option processing and several
other similar modules, I have to say that most of the time you
probably want to use Getopt::Long instead of the other alternatives.
Or at least pick the alternatives which are based on Getopt::Long,
instead of those that reinvent the wheel and do their own option
parsing. <br><br>Most other modules that reinvent option parsing
either don't bother to do short option bundling (-abc instead of -a
-b -c), or abbreviation (--long-o instead --long-option-name), or
the choice to (dis)allow mix-mashing options and arguments, or
support '--' to end option processing, or respect ordering, or
support multiple options (--verbose --verbose), or support
'--foo=val' *as well as* '--foo val', and so on. These are features
and conveniences that are taken for granted by people working daily
in Unix command-line. <br>
Text::Table::Tiny
Author: NEILB <https://metacpan.org/author/NEILB>
Very fast, several times faster than Text::TabularDisplay or
Text::Table (and many times faster than the other slower
table-generator modules). It uses sprintf() to format a whole row
instead of formatting each cell separately using sprintf() and
joining cells together with join(). <br><br>I did a comparison in:
<a
href="http://blogs.perl.org/users/steven_haryanto/2014/07/benchmarki
ng-several-ascii-table-generator-modules.html"
rel="nofollow">blogs.perl.org/users/steven_haryanto/...</a>
Mo Author: TINITA <https://metacpan.org/author/TINITA>
A great alternative when Moo is a bit too much for you. Useful for
scripts that must start really fast. Mind you, Moo loads about 5K
lines of code and more than a dozen files, all of which takes +-
10ms on my computer. Mo on the other hand is only a single line of
+-500 characters, and it's inlinable. It loads in under 1ms. If a
script must be executed thousands of times a day, that 9ms
difference will matter more. <br><br>I use this for a very
lightweight parent class. A richer subclass then uses Moo.
<br><br>Isn't it great that we have the choices and upgrade path
from the very minimal Mo, to Moo for normal cases, to Moos and Moose
for even richer (but heavier) alternatives. Truly TIMTOWTDI! <br>
App::ChangeShebang
Author: SKAJI <https://metacpan.org/author/SKAJI>
Given that the name of this module/app is "change shebang"
(instead of "change shebang to samedir perl") perhaps this
app can be made more generic? For example, I've had to change all
shebangs from "#!/usr/bin/env perl" to "#!perl"
and vice versa. Perhaps this module/app can become a tool to easily
switch between shebangs. <br>
Hash::Ordered
Author: DAGOLDEN <https://metacpan.org/author/DAGOLDEN>
Overall looks ok, with the exception that it does not look and feel
like a regular Perl hash at all. Now someone just needs to create a
tie interface on top of this :) <br>
App::whatthecommit
Author: MUDLER <https://metacpan.org/author/MUDLER>
From the description: "App::whatthecommit is just another
lazy-to-lazy line command utility." I'd thought the definition
of laziness would be something like 'alias gc=git commit
--allow-empty-message'. This is more like hubris. Or whatever. :)
<br>
Opt::Imistic
Author: ALTREUS <https://metacpan.org/author/ALTREUS>
Very nifty for short scripts and some clever design inside (all
options are stored as arrayref, but there is some overloading to
make getting boolean/flag and normal scalar value convenient).
<br><br>For more "proper" scripts though (anything above
say 20-30 lines) I'd recommend using something like Getopt::Long
with a real spec. Some of the features I like in G::L not in
Opt::Imistic: the ability to get --noOPT for free for flag options,
the ability to configure permute/no_permute (mix mashing options
with arguments), some data validation, and of course:
autoabbreviation of long option names, which requires a spec after
all.
Devel::STrace
Author: DARNOLD <https://metacpan.org/author/DARNOLD>
The doc looks promising, it really looks like it could be the
"strace for Perl functions", but the usage is awkward (you
have to open two terminals, one for running your program and
producing trace file, and another for reading this file). And I'm
probably an idiot, but I can't get this module to work for me.
<br><br>One alternative if you're looking for a similar module is
Debug::LTrace. <br><br>
Devel::TraceSubs
Author: PARTICLE <https://metacpan.org/author/PARTICLE>
For an alternative, try Debug::LTrace, which roughly provides the
same basic feature but is more convenient to use from the
command-line and give extra information like timing. <br><br>
Devel::TraceCalls
Author: COSIMO <https://metacpan.org/author/COSIMO>
Might be powerful and flexible, but not convenient to use especially
from command-line. (I was searching for something like "strace
for Perl function"). <br>
returning error ("$Var00 = not a reference" when given
Dumper(1) for example) as result is arguably unwise. <br>
Archive::Probe
Author: FGZ <https://metacpan.org/author/FGZ>
I would personally pick a non-OO, no-nonsense interface based on
File::Find, like: <br><br>use File::Find::Archive qw(find); # or
find_archive <br> find(sub { ... }, "some.tar.gz");
<br><br>instead of the multiline, tedious setup just to search a
file. <br>
App::DBBrowser
Author: KUERBIS <https://metacpan.org/author/KUERBIS>
A nice, minimalistic, terminal-based user interface for browsing
your database and tables. Might be useful for simple cases.
<br><br>It would be *much* more useful if usernames/passwords,
queries, and other settings can be saved in a config/session file.
<br>
Locale::Maketext
Author: TODDR <https://metacpan.org/author/TODDR>
Users might want to check out this article on why one should perhaps
use Locale::TextDomain instead of Locale::Maketext: <a
href="http://www.perladvent.org/2013/2013-12-09.html"
rel="nofollow">www.perladvent.org/2013/2013-12-09.html</a>
Curses::Toolkit
Nice effort, but one might also want to look at Tickit, which is not
curses-based and looks more promising. Being based on Curses, this
module still suffers from the many bugs and limitations of curses.
The lack of Shift-Tab support, for one. <br><br>See also: <a
href="http://www.perlmonks.org/?node_id=1059926"
rel="nofollow">www.perlmonks.org/?node_id=1059926</a> <br><br>As I
explore doing TUI more, I will update the reviews. <br>
Moo::Lax
Author: DAMS <https://metacpan.org/author/DAMS>
Great idea! I've been bitten and annoyed by strictures on more than
one occasion. It has its uses, but users should have a choice on how
to react to warnings. <br>
App::YTDL
This module is based on WWW::YouTube::Download but its documentation
does not yet explain how it differs from WWW::YouTube::Download.
From what I see at a glance, App::YTDL supports downloading a video
from a playlist and setting download speed limit, but perhaps the
author should do the mode detailed explaining to help users when to
choose between the two. <br>
Data::CompactDump
Author: MILSO <https://metacpan.org/author/MILSO>
At the current form, simply too simplistic to be an alternative to
Data::Dump or Data::Dumper. No support for blessed refs,
filehandle/globs, circular references, and so on. Changes numbers to
stringy numbers or vice versa. <br><br>Currently also contains some
bugs like for -1 (changes it to string), "\" (produces
invalid dump, does not handle backslash yet currently), <br><br>And
Data::Dump's dump of {} and [] are currently more compact ;-)
<br><br>Need to be improved significantly first. But keep up the
effort.
P Author: LAWALSH <https://metacpan.org/author/LAWALSH>
I personally don't mind the namespace choice. There are other
single-letter CPAN modules too like B, L, U, V. If you have a beef
with regard to namespace, don't single out P and perhaps downvote
the other modules too. <br><br>Having said that, I would like to
comment on the design and implementation of this module. <br><br>1)
The choice of Unicode character U+2204 as representation of undef.
Unless one does something like 'binmode STDOUT, ":utf8"',
with 'say P undef' I am just trading one warning ("Use of
uninitialized value") with another ("Wide character in
say/print"). The wide character warning is avoided if you do 'P
"%s", undef' though, which means... <br><br>2) P loads
utf8 by default. For ultra-lightweight cases, this is sometimes not
desirable. There is currently no way to turn this off. <br><br>3)
The arbitrary choice of three levels deep when printing references.
This can be customized but with an unusual syntax. But again, the
arbitrary choice of three. <br><br>4) The "complex" rules
of newline printing. p() is like puts, it can optionally add a
newline. But unlike puts, the doc says it can also remove newlines.
The behavior can also change if the string to be printed ends with
0x83. <br><br>I might use P for a sprintf/printf replacement, but
for debugging values, I'd prefer something "dumber" like
Data::Dump::Color (or Data::Printer, if that's your thing).
Xporter
Author: LAWALSH <https://metacpan.org/author/LAWALSH>
A couple of comments. First, if you want to import the default
exports *as well as* some additional others, you can use Exporter's
feature (the :DEFAULT tag): <br><br>use SomeModule qw(:DEFAULT a b
c); <br><br>or you can also "use" twice: <br><br>use
SomeModule; # imports default exports <br><br>use SomeModule qw(a b
c); # import a, b, c <br><br>Second, if you use Xporter, your module
will behave unlike most CPAN modules out there, because a majority
of modules use Exporter. When people see this Perl code: <br><br>use
SomeModule qw(a b c); <br><br>normally they will expect only a, b,
and c are exported. If SomeModule uses Xporter, it will also by
default export the default exports. <br><br>Basically Xporter is
just Exporter with a different default (not arguably better or more
user-friendly). For the sake of minimizing surprise to my users, I
would avoid the use of Xporter. <br><br>UPDATE 2014-01-24: some
edits. I appreciate the effort of the author to defend her module,
though I am not convinced by her arguments.
Dist::Zilla::Shell
Author: DOLMEN <https://metacpan.org/author/DOLMEN>
Nice tool that lets you type dzil commands like 'build', 'test', etc
while sending all the other unknown commands like 'ls -l', 'man Foo'
to the underlying shell. Also lets you avoid multiple startup
overhead of dzil :-)
CPANPLUS::Shell::Curses
Author: MARCUS <https://metacpan.org/author/MARCUS>
Unmaintained. Installs but no longer runs.
Rating: 2/10
Task::Mechanistic
If you peek into its Makefile.PL, you'll see a seemingly
random/heterogenous collection of modules to install (instead of
just WWW::Mechanize). This is probably a Task::BeLike::$AUTHOR in
disguise. <br><br>
Sereal
Author: YVES <https://metacpan.org/author/YVES>
So far the best of the bunch. <br><br>FAST: much faster than
Storable, roughly the same speed as (sometimes slightly faster than)
Data::Clone for cloning. <br><br>FEATUREFUL: Can handle circular
references, Regexp objects (trips out-of-the-box Storable),
JSON::{PP,XS}::Boolean objects (trips Data::Clone). <br><br>COMPACT:
definitely more compact (up to several times) than Storable.
<br><br>I'm sold. What more do you want? Le Storable est mort, vive
le Sereal!
Test::Tester
Author: EXODIST <https://metacpan.org/author/EXODIST>
If you write test functions, you need this. It's like the
"Test::More" for "Test::More". However, it
currently does not work out of the box with subtests (submitted as
wishlist to RT). <br><br>PS: Thanks to Toby Inkster for pointing
this module out. <br><br>
Text::CharWidth
Author: KUBOTA <https://metacpan.org/author/KUBOTA>
It's faster than Unicode::GCString->new($str)->columns, but it
gives wrong answers to lots of characters, e.g. control characters
like "\n", "\t", etc are currently assumed to
have width of -1 character. You're better off with
Unicode::GCString.
Rating: 2/10
App::Options
Author: SPADKINS <https://metacpan.org/author/SPADKINS>
2010-10-13: <br><br>I admit, this is not the most flexible
configuration framework out there as it enforces some convention.
And I don't/can't use it on every project. But it's certainly one of
the easiest. You can slap a few lines of options declaration in your
code and voila, your script suddenly can accept command line
arguments, has --help message et al, read from config files (in
several preset locations). <br><br>There are still a few annoyances
(I submitted them in the RT), but in general, this is a very handy
module to use for lazy coders who just want to accept
configuration/options from outside the code. <br><br><shameless
plug>I'm trying to do somewhat the same with Config::Tree, but as
of now the module is not really done yet.</shameless plug>
<br><br>UPDATE 2013-08-15: <br><br>I'm reducing the ratings from 5
to 2. I've now avoided using this module due to two lingering issue
since 2010: 1) App::Options does not accept '--opt val', only
'--opt=val' which is incompatible with how most command-line
programs work, causing confusion for some of my users. 2) 'perl -c'
doesn't work under this module, it will still trigger command-line
processing. <br><br>I'm now using Perinci::CmdLine as replacement,
but I cannot recommend it in general, as the two modules are not
equivalent.
Rating: 4/10
Filesys::Notify::Simple
Author: MIYAGAWA <https://metacpan.org/author/MIYAGAWA>
It's rather unfortunate that currently the choice for general
purpose cross-platform filesystem notification modules on CPAN falls
between this module (FNS) or File::ChangeNotify (F::CN). The other
CPAN modules are either OS-/framework-specific. <br><br>FNS has a
simple API but is perhaps too simple for some uses, while F::CN uses
Moose and has a big startup overhead. <br><br>If you simply want to
check from time to time whether a change has occured, you need to
wrap the wait() method with alarm(). And I found on my Linux PC that
I need a timeout of at least 3 seconds for this to work reliably.
Rating: 8/10
experimental
Author: LEONT <https://metacpan.org/author/LEONT>
Vote +1 to add this to core. Please make coding in Perl 5 relatively
painless.
MIME::Lite::HTML
Author: ALIAN <https://metacpan.org/author/ALIAN>
Very straightforward to use (I needed to send a URL/webpage as HTML
email with embedded images/objects). With this module I can finish
my job with only a few lines of Perl in 3-5 minutes (searching for
this module in CPAN takes more than that! searching using "mail
web" or "email url" at first didn't get results).
<br><br>Blackberry is having trouble displaying the resulting email
though. No problem with Gmail or Thunderbird/Icedove.
Term::Size
Author: FERREIRA <https://metacpan.org/author/FERREIRA>
5-year old bug like RT#38594 still present. Use one of the alternate
implementations like Term::Size::{Unix,Win32,ReadKey}. <br>
Rating: 2/10
DateTime::Format::Flexible
Author: THINC <https://metacpan.org/author/THINC>
While it doesn't cover as much phrases as DateTime::Format::Natural,
at least it's simpler to translate (and the dist already includes a
couple of translations). BTW, I think like in the POD of
DateTime::Format::Natural, it needs to list which phrases it
supports. And probably add more :-) <br><br>
Rating: 8/10
DateTime::Format::Natural
Author: SCHUBIGER <https://metacpan.org/author/SCHUBIGER>
I'm giving DateTime::Format::Natural 3 stars because while it's
great for English (it covers more phrases than
DateTime::Format::Flexible), it's also hard to translate. Look at
the source code for DateTime::Format::Natural::Lang::EN: lots of
Englishisms and weird structures (%grammars). Wonder why so far
there has not been any translations to another language? <br>
Rating: 6/10
App::sourcepan
Author: PEVANS <https://metacpan.org/author/PEVANS>
Thanks, just what I needed. (I was hoping cpanm would accept my
--download patch, but this is just as well). <br><br>It still uses
CPAN.pm and thus downloads the relatively big 01mailrc.txt.gz and
02packages.details.txt.gz file, thus slowing the first use. If you
load_module("Math::Module")->new(42) be more obvious?
Is there a specific goal for using custom quote operator (which
requires Devel::Declare, and thus a C compiler to build)? <br>
Module::Hash
Author: TOBYINK <https://metacpan.org/author/TOBYINK>
Wouldn't a function like
load_module("Math::Module")->new(42) be more obvious?
Is there a specific goal for using a tied hash (since there is
already %INC)?
Promises
Author: YANICK <https://metacpan.org/author/YANICK>
5-star for its documentation. <br>
Lingua::ITA::Numbers
Author: PETAMEM <https://metacpan.org/author/PETAMEM>
Does the author care to explain the sudden influx of
Lingua::<3-letter-code>:: modules (which look like mostly just
repackaging of their corresponding Lingua::<2-letter-code>::
modules with no mention of purpose in the PODs)? The original
modules are not orphaned either (for example, I still maintain
Lingua::ID::*). <br><br>No Changes file. Versioning synchronized for
all 3-letter modules with no indication of what version of the
2-letter-code module is used. For example, Lingua::ITA::Numbers' doc
still says "decimals don't work properly", while
Lingua::IT::Numbers' doesn't (however, needless use of
Regexp::Common does gets removed).
HTTP::Headers::Patch::DontUseStorable
Author: PERLANCAR <https://metacpan.org/author/PERLANCAR>
@zaxon: I'm not sure if it's a bug with HTTP::Headers, more like a
workaround for Storable. See the FAQ in the updated v0.03 for more
details. <br>
Storable
Author: NWCLARK <https://metacpan.org/author/NWCLARK>
Balancing previous glowing reviews. Storable has it faults, for
example historically its track record for file format backwards
compatibility is poor, making programs fail when loading Storable
files after the module is upgraded. <br><br>Also, more importantly,
add builtin support for Regexp object already! It's almost 2013,
Regexp object has been around for, what, more than a decade? I can
understand not supporting serializing filehandle or coderef, but
Regexp object?
Rating: 2/10
WWW::YouTube::Download
Author: OALDERS <https://metacpan.org/author/OALDERS>
Works for me too ATM. I've tried several command-line scripts (most
of them Python-based, like youtube-dl, tubenick, etc). Sometimes
they work, sometimes they broke. It's the nature of this kind of
script. The quality comes from persistence. This module has been
maintained since 2009, through several YouTube's changes. I commend
the author, good job, and thanks!
Number::Zero
From the module's POD: "The number zero and undef are difficult
to determine in Perl." <br><br>Are they? <br><br>say
!defined($data) ? "undef" : "not undef";
<br><br>say defined($data) && $data==0 ? "zero" :
"not zero"; # yes, warn if non-numeric <br><br>use
Scalar::Util 'looks_like_number'; <br> say looks_like_number($data)
&& $data==0 ? "zero" : "not zero";
<br><br>Though I understand the need for a convenient
"is_zero" function if you need to test for zero in a
program a lot.
Syntax::SourceHighlight
Author: MATLIB <https://metacpan.org/author/MATLIB>
IMO, currently the only usable (read: non-crap) code syntax
highlighting library on CPAN. Cons: you'll need to install GNU
Source-highlight (and its development library/header) which pulls
over 100MB of packages on my Debian. <br>
Rating: 8/10
Syntax::Highlight::Engine::Kate
Author: MANWAR <https://metacpan.org/author/MANWAR>
Highlighter engine doesn't seem updated (for example, defined-or is
not yet interpreted correctly by this module but already correctly
by Kate itself). Does not provide default theme (must specify all
colors). Seem to be very slow (takes 1.5s for a 18K Perl .pm file
while Pygments only takes 0.2s). <br><br>
Rating: 2/10
Syntax::Highlight::JSON
Author: MART <https://metacpan.org/author/MART>
No documentation. Combines formatting and syntax-highlighting, so
you cannot preserve original formatting. Only outputs to HTML and no
default "theme" (CSS) provided. <br>
Rating: 2/10
Syntax::Highlight::Engine::Simple
Author: AKHUETTEL <https://metacpan.org/author/AKHUETTEL>
Output looks decent. However, it currently only formats to HTML/CSS
(no ANSI, LaTeX, etc). Also, it needs more languages support. <br>
Rating: 6/10
Syntax::Highlight::Universal
Author: PALANT <https://metacpan.org/author/PALANT>
Only targets (X)HTML (i.e. no alternative output like ANSI or
LaTeX). Supposedly slow. But it doesn't matter because code no
longer builds (last updated in 2005).
Rating: 2/10
PerlX::Perform
Author: TOBYINK <https://metacpan.org/author/TOBYINK>
I personally don't see much value of this syntactic sugar since Perl
already allows us to express clearly. Pick one: <br><br>for ($foo) {
say $_ if defined } <br><br>for (grep {defined} $foo) { say $_ }
<br><br>do { say $_ if defined } for $foo <br><br>say $_ for grep
{defined} $foo <br><br>And save yourself from having to remember
whether we should add a comma or not before "wherever".
<br>
TOBYINK::PerlX::A
I have nothing against bundles like this, but beware that adding
'use TOBYINK::PerlX::A' will cause Perl to load 460 files and
compile +- 160k lines (takes 1s on my Core i5 machine and 8s on my
Atom netbook).
WWW::Google::Images
Just adding a note that this module is unmaintained (as expressed by
the author) and has stopped working for some time. If you are
looking for alternatives, try REST::Google (which includes
REST::Google::Search::Images). The latter has been working OK for
me.
Acme::Damn
Author: IBB <https://metacpan.org/author/IBB>
5 stars for cute metaphor (there's also Acme::Holy by the same
author, but that is just another implementation of Scalar::Util's
blessed()) and for prompt support from the author. <br><br>I'm sure
there exists a real use case to move this out of Acme::, however
obscure that might be. Can't come up with any right now, all I can
think of is reblessing, which can be handled with bless() from the
start. <br><br>UPDATE 2013-09-11: I found a real use-case for it!
Cleaning up data to be sent to JSON. BTW, Data::Structure::Util also
has an unbless() function, but Acme::Damn is smaller and faster.
Data::Structure::Util also currently doesn't build on Windows. <br>
WWW::Parallels::Agent
@Justin Case: The name is unfortunate, but it's already proper
(WWW:: followed by website or company name). HTTP client libraries
are in LWP::. But VM:: is also an apt choice. <br>
Underscore
I don't know why Sawyer X's review is marked as unhelpful (2 out of
8), but I agree with him. This is *not* an Acme module, it's a port
of a JavaScript library of the same name. <br>
Locale::Geocode
Author: DIZ <https://metacpan.org/author/DIZ>
Sorry to have to rate with 1 star. I don't have problem with the
interface/documentation. The 1-star rating is just to warn people
that the data used by this module is not up to date. And that
YEARS-old bugs are not being fixed. <br><br>At the time of this
writing, this module still uses ISO 3166-2:1998 (first edition) +
the newsletters (minor updates) up to 2006. When it should be
updated to ISO 3166-2:2007 (second edition) + all the newsletters.
For example, this module does not report 3 newer provinces in
Indonesia. <br><br>Sadly we live in a world where countries and
subcountries change all the time.
Rating: 2/10
Locale::SubCountry
Author: KIMRYAN <https://metacpan.org/author/KIMRYAN>
UPDATE 2012-08-30: I am not sure if the module is now fully
compliant to the new ISO 2007, but bug reports are certainly being
responded and resolved now. Updating rating from 1-star to 4-star.
Thanks, Kim. <br><br>2012-02-17: Review to version 1.47:
<br><br>Sorry to have to rate with 1 star. I don't have problem with
the interface/documentation. The 1-star rating is just to warn
people that the data used by this module is not up to date. And that
months-old bugs are not being fixed. <br><br>At the time of this
writing, this module still uses ISO 3166-2:1998 (first edition) when
it should be updated to ISO 3166-2:2007 (second edition) + all the
newsletters (minor updates). For example, this module does not
report 3 newer provinces in Indonesia. <br><br>Sadly we live in a
world where countries and subcountries change all the time.
<br><br>EDIT: Ok, so I was not being clear that I was not talking
about my own bug report (posted at about the same time of this
review). And bugs were certainly being resolved up to about 7 months
ago. <br>
Rating: 8/10
Data::Rmap
Author: BOWMANBS <https://metacpan.org/author/BOWMANBS>
A very handy utility, sort of like s/// on your nested data
structure instead of just strings. One nitpick: no coderef support.
I needed to replace all coderefs inside a data structure into a
string, since I want to pass it to JSON encoder. None of the
rmap_*() functions seem to let me get to the coderefs. (RT wishlist
ticket added.) <br><br>UPDATE 2011-12-30: The author (Brad) quickly
responded to my RT ticket and added rmap_code. Upgrading from 4- to
5-star :) Regexp support is not there yet though, and I have
suggested the ability to get all kinds of Perl-specific and weird
objects, because one of the main uses of Data::Rmap for me is to
"clean" a data structure to pass to non-Perl systems. <br>
Data::Properties::JSON
Author: JOHND <https://metacpan.org/author/JOHND>
The abstract for this module is a bit strange. What does this have
to do with 'test fixtures'? Also the documentation doesn't say much,
e.g. What will happen if a hash key contains funny characters (or
arrays, etc)? <br><br>A similar module in spirit is Data::Hive. I
think "providing convenient chained method access to
hierarchical data" should be refactored out. So perhaps
Data::Properties::{JSON,YAML,...} should just be a convenient
shortcut for {JSON,YAML,...} parser + Data::Hive.
Exporter::Auto
Author: NEILB <https://metacpan.org/author/NEILB>
I discourage module authors from exporting like this because it's
simply too impolite/intrusive for module users. If the module author
is lazy, there is already Exporter::NoWork which offers a few
options for module users. This module, on the other hand, gives no
control at all for users (so they'll have to resort to 'use Module
();'). <br><br>Let me remind all again by quoting from Exporter's
POD: "Do *not* export anything else by default without a good
reason! Exports pollute the namespace of the module user."
Net::Douban
Interface to web services should be put under WWW::*, not Net::*
HTML::Form::XSS
Author: DUMB <https://metacpan.org/author/DUMB>
Should probably be put under Test::*?
Thread::IID
Author: WROG <https://metacpan.org/author/WROG>
When I saw the perlmonks thread yesterday, I thought "well,
someone should package it and put it on CPAN". And then someone
did :) Thanks. <br>
Test::Lite
Author: BRADH <https://metacpan.org/author/BRADH>
This is just a reimplementation of Test::More. But I thank the
author for writing a short description of why this module is
written, how it is different from others, and suggestion of what
modules users should use. There are a lot of wheels being reinvented
on CPAN, and that's okay, I just wish more people would document the
reason.
Sub::Mage
Author: BRADH <https://metacpan.org/author/BRADH>
Since the first release, there are 13 subsequent releases in total.
What are the changes between releases? No idea, the author doesn't
bother to update Changes (and no public repo is listed). Apparently
all his other modules are also like this. Not very user-friendly.
<br><br>UPDATE 2011-11-22: I see that this has been rectified by the
author, there is now Changes entry for each new release. Cool,
thanks. <br>
relative_lib
Documentation is placed in README.md, so it's inaccessible from
perldoc et al. Why? This is not a Python library.
CPAN::Mini::Webserver
Author: MITHALDU <https://metacpan.org/author/MITHALDU>
Just found out about it, despite having used CPAN::Mini for over a
year. Helps *a lot*. More people should know this (e.g. mention from
CPAN::Mini POD).
Win32::App::which
Author: DOLMEN <https://metacpan.org/author/DOLMEN>
I don't use this module since I'm not on Windows. But why another
module? File::Which also handles Win32 (probably not the "the
current directory is explored before PATH" thing, but you
should consider submitting a patch). <br><br>At least the
documentation should state why this module is necessary. It
complicates scripts by having to select between two 'which'
implementations.
Devel::Platform::Info
Author: BARBIE <https://metacpan.org/author/BARBIE>
I knew CPAN wouldn't let me down. Now I can discard my own
OS/platform detecting code (which probably is buggier and not nearly
as extensive) and rely on Devel::Platform::Info instead.
<br><br>Devel::Platform::Info gives information not only about the
OS but also architecture, kernel type & version, etc. In my case
I need to detect distro name, its version, and its codename. All of
those are provided. <br><br>This module is so new though (started in
2010) so I wonder whether this need has never come up before. <br>
Package::Builder
Author: DRAUONER <https://metacpan.org/author/DRAUONER>
Less boilerplate please!
Rating: 2/10
File::LibMagic
Author: DROLSKY <https://metacpan.org/author/DROLSKY>
After comparing against File::MMagic, File::MMagic::XS, File::Type,
I ended up choosing File::LibMagic because it has the least problems
and looks like being the most maintained (although it would be nice
if the author cleans up the RT queue). <br><br>For those stuck
without a C compiler, File::Type or File::Magic can be an
alternative.
Rating: 8/10
File::MMagic::XS
Log::Fine is touted as a framework for those who "need a
fine-grained logging mechanism in their program(s)". But apart
from the emphasis on custom levels, to me there is nothing extra
fine-grained about it. The other thing it provides is
categories/namespace, which is also supported by a lot of other
frameworks. So I fail to see the benefit/uniqueness of Log::Fine.
<br><br>Btw regarding custom levels, this practice is long
deprecated by log4j (and thus also by Log4perl, although Log4perl
can do custom levels). I can understand this decision as I sometimes
already have trouble managing the popular convention of 6 levels
(FATAL/ERROR/WARN/INFO/DEBUG/TRACE) as it is, much less with custom
levels!
Rating: 6/10
Config::IniFiles
Author: SHLOMIF <https://metacpan.org/author/SHLOMIF>
This module has been developed for more than a decade and seen
different maintainers over the years. The codebase is indeed showing
these, with different capitalization and indentation styles, among
other things. <br><br>However, among more than a dozen or so of INI
modules in CPAN, ironically there seems to be few other choices if
you go beyond the most basic feature set. Some INI modules can only
simplistically rewrite/dump the whole INI structure and thus lose
comments/orders, while others can't even write INI files.
<br><br>Config::IniFiles by far offers the most options and
features, like dealing with line continuation, case sensitivity,
default section, multiline/array, deltas, etc. So for now, despite
all of its quirks, this module is still hard to beat.
<br><br>There's another nice little INI module that can do
read/set/delete/unset (instead of just read/dump): Prima::IniFile,
but it is included in a totally unrelated distribution.
Rating: 8/10
DateTime
Author: DROLSKY <https://metacpan.org/author/DROLSKY>
Amidst all the glowing reviews may I add a reminder that, as with
everything, there's a catch: runtime performance. On my PC, the
speed of creating a DateTime object is just around 6000/sec. If you
use DateTime intensively, it can quickly add up. <br><br>Imagine
serving a web page that fetches 50 rows from database, where for
convenience you convert each date column to a DateTime object, and
you have 120 requests/sec coming in... That's already 6000 objects
(an extra second!). <br><br>Which is unfortunate because DateTime is
so wonderful, convenient, correct, complete and all that. So one
approach you can use might be to delay converting to DateTime object
until necessary.
Date::Manip
Author: SBECK <https://metacpan.org/author/SBECK>
Wow, there are surely a lot of negative reviews ... <br><br>First of
all, Date::Manip has a long history. I used this module back in
2001-2002, IIRC. Back then it was *the* swiss army of date/time
manipulation, something you use when you want the most
flexible/complete thing in Perl. True, it's slow, but it works.
<br><br>But then things change. DateTime project was started, and
now it is somewhat the de facto standard. It's more modern and far
more modular than the monolithic Date::Manip (every timezone and
language support and parsing/formatting modules shipped in one
single distribution). <br><br>And then there's the 5.x -> 6.x
debacle. As someone who also sprinkle Perl 5.10 requirements to his
CPAN modules, I can feel for the author. But the difference is, most
of my modules are not that widely used/known, and also many start
its life already requiring 5.10 right from its first released
version. While in Date::Manip's case, this happens to a very widely
used module. Surely backwards compatibility should be considered
more. <br><br>All in all, you are free to use or not use
Date::Manip. There are other alternatives. Pick wisely. <br>
Rating: 6/10
App::pmuninstall
Author: XAICRON <https://metacpan.org/author/XAICRON>
One would wonder why CPAN clients still don't have this crucial
feature Though you see Miyagawa listed in the Credits so maybe
cpanminus or its sister will end up having this functionality? One
can only hope. At 0.06, some things are not working flawlessly
(submitted in RT). Keep up the good work! <br><br>
App::lntree
Author: ROKR <https://metacpan.org/author/ROKR>
I guess this app is still useful, since "cp -sR" still
doesn't work as many would expect, and there are Windows users out
there (yes, newer NTFS does support symlinks; though I don't know
whether this module supports creating symlinks on NTFS). <br><br>A
minor comment would be on the name, maybe lnstree can be considered
instead (since "ln" indicates hardlink, at least for me).
Btw, there's also a free software called "lns" to do the
exact same thing. <br><br>
Data::Clone
Author: GFUJI <https://metacpan.org/author/GFUJI>
I've never encountered difficulty in cloning data structures in
Perl, usually I just use Clone or sometimes Storable's freeze + thaw
(the later does not yet support cloning Regexp objects out of the
box). <br><br>However, I like Data::Clone for its speed! It's
several times faster than Clone or freeze+thaw. So hats up. Planning
to use Data::Clone in future projects. <br><br>Now if we can
convince Goro to write a fast serializer/deserializer with compact
output (essentially, a faster version of Storable), that would be
even nicer :-) <br><br>
Data::Pond
Author: ZEFRAM <https://metacpan.org/author/ZEFRAM>
With due respect to the author, I fail to see the practical point of
Pond. Pond (Perl-based open notation for data) is the Perl
counterpart of JSON, except that implementation is currently only
available in Perl (CMIIW), and "Pond represents fewer data
types directly". <br><br>Pond is pitched against Data::Dumper +
eval, which is dangerous, but Data::Dumper + eval is by far not the
only method available for serialization. Perl can do Storable, JSON,
YAML, even PHP serialization format. <br><br>The documentation does
( run in 3.184 seconds using v1.01-cache-2.11-cpan-9e1a9122474 )