This module declares itself as "obsolete, you will receive no support", but this is not mentionned in the POD or on the bug tracker. So you may discover this like me only once you have endured the broken install of Net::Libdnet.

Term::Detect tries to detect settings of the terminal by looking for known process names in the process tree (and the non portable pstree command is used for that). This is flawed and against the Unix way of handling terminals:
- this will not work when the process runs on a remote server (through SSH)
- this will not work properly when the process is launched from a terminal multiplexer (screen, tmux)

The proper way is instead to base detection on $ENV{TERM} and the terminfo database. So, see instead Term::Terminfo and Term::Encoding.

This module is very specific to China while the approach could be more generic.

And the build script (to rebuild the module from an updated GeoIP) is not bundled, so if you use this module you rely entirely on its maintainer to provide updates. And controlling the content (the IP blocks) is hard.

At least someone who understood the power of JSON::RPC 2!
This implementation fixes the major flaw of almost all JSON::RPC implementations: it separates the transport layer.
And so it works well inside event loops such as AnyEvent.

Despite the 'Changes' file that says for 0.60 that Net::Github::V3 is supported, that does not seem to be the case: after fixing a first obvious bug in the "list" command, "gh list dolmen" just says "v2 API is deprecated from github".

This distribution includes the AnyEvent::MessagePack module that would desserve to have its own distribution.
This review is only about AnyEvent::MessagePack.

AnyEvent::MessagePack combined to its underlying engine Data::MessagePack::Stream has currently major design issues that makes it not a 100% clean AnyEvent read_type: it will eat all the data it receives and pass it to Data::MessagePack::Stream, even if not all data is MessagePack. So if your stream combines both MessagePack and other data types (JSON, Storable) at the raw level, don't expect it to work correctly. As Data::MessagePack::Stream 0.07 doesn't have an API to give back the data it didn't consume, this is not fixable.

Despite the generic name, this is not a generic implementation of array manipulation because all values are stringified when processed.
So this module should only be used for arrays of strings.
See RT#75835 for details. rt.cpan.org/Ticket/Display.html?id=75835
See List::MoreUtils as an alternative.

But the POD documentation of this module is awful, and so I've not been able to successfully use it. It seems also outdated as the distribution contains an undocumented Perl::Tags::PPI.
The README contains some additional web links not in the POD, but that's is not where I expect to find how to use the module.

sysconf() is in the POSIX module which is in the Perl core.
This only use for this distribution is to extract sysconf constants from /usr/include/sys/unistd.h that may not be exported in the POSIX module.
If your Perl has been packaged by your operating system vendor you probably don't need it.

The only problem of this module is that it probably doesn't do what you expect if you just want to validate user input: it accepts much more than just "mailbox@domain", including spaces... See opened bugs.

Exactly the module I needed, with a name that matched my search request on CPAN.

This is the module to use when you have to clean dirty data.

In my case I could not use PerlIO to directly load UTF-8 text from a file because I had to process the data through a regexp and my Perl has a bug in the Regexp engine. As a workaround I load text as binary, parse it with Regexp::Grammars, and feed the result tree to Data::Recursive::Encode.
(For details of the Perl bug, see rt.cpan.org/Public/Bug/Display.html?i... )

POE is THE module you must use for event programming.
The code is of great quality with an extended test suite, and it works on all platforms I have access to (Linux, Win32, HP-UX).
The support is of first class quality: bugs are quickly fixed and new release occur often.
Many plugins are available to handle any kind of events you may imagine.