note
haukex
<p>Perl is IMO still very powerful in the areas it has always been powerful in: text processing (regexes etc.), system administration, web development, and so on. Glancing over at *NIX help forums today shows that people are still getting a lot done with <c>sed</c>, <c>awk</c>, and <c>perl</c> one-liners. It's also come into use in the bioinformatics world, AFAIK for its power in handling text files. But Perl has also grown a significant amount:</p>
<blockquote><i>what are hot items on CPAN these days?</i></blockquote>
<p>Just to name a few "modern" ones:</p>
<ul>
<li>[mod://Moose] and its lighter-weight friends like [mod://Moo] (<small><i>Update:</i></small> also [mod://Type::Tiny])</li>
<li>[mod://DBIx::Class]</li>
<li>[mod://Mojolicious] and other web frameworks like [mod://Catalyst] and [mod://Dancer2] (see also: [id://1182902], [id://1177812]; <small><i>Update:</i></small> also [mod://PSGI] and [mod://Plack] are worth mentioning)</li>
</ul>
<p>Although not exactly new, there are some other nice frameworks/libraries that IMO make Perl more "modern":</p>
<ul>
<li><small><i>Update:</i></small> [http://strawberryperl.com/|Strawberry Perl], [https://perlbrew.pl/|perlbrew], [https://github.com/tokuhirom/plenv#readme|plenv], and [https://github.com/stevieb9/berrybrew#readme|berrybrew]</li>
<li><small><i>Update:</i></small> [mod://App::cpanminus] (<c>cpanm</c>)</li>
<li><small><i>Update:</i></small> [https://metacpan.org/author/RJBS|RJBS]'s set of <c>Email::*</c> modules, such as [mod://Email::Stuffer]</li>
<li>[mod://PDL] for scientific numeric calculations (<small><i>Update:</i></small> I'm also a fan of [mod://Math::Prime::Util] and [mod://Math::Prime::Util::GMP|::GMP])</li>
<li>event loop frameworks like [mod://POE] and [mod://Mojo::IOLoop]</li>
<li>date/time manipulation via [mod://DateTime] (<small><i>Update:</i></small> or, for simpler stuff, [doc://Time::Piece] is in the core)</li>
<li>file(name) manipulation via e.g. [mod://Path::Class] or [mod://Path::Tiny], as well as modules like [mod://File::Find::Rule]</li>
<li>XML handling via e.g. [mod://XML::LibXML] or [mod://XML::Twig], and many more</li>
<li>[id://1047948|many GUI frameworks]</li>
<li><small><i>Update:</i></small> [mod://Try::Tiny] (gives Perl a <c>try</c> "keyword" and hides some of the [id://1153468|issues] with [doc://eval])</li>
<li>[mod://Devel::Cover] for code coverage and [mod://Devel::NYTProf] for profiling</li>
<li><small><i>Update:</i></small> Definitely not new, but I like the core modules that provide an OO interface such as [doc://File::stat], [doc://User::pwent], and [doc://Time::localtime] (although [doc://Time::Piece] is probably better than the latter nowadays)</li>
</ul>
<p>Probably other monks can point out some of the "big ones" I've missed - see also [mod://Task::Kensho] for even more modules. In general, I think even many of the modules that have been around for a really long time have matured to the point where they are more robust, have good test suites, etc. (e.g. [mod://Template], just to name one of many) - either that, or, [id://1168649|in some cases], are now generally recommended against or deprecated.</p>
<p><small><i>Various minor edits, and updates as indicated.</i></small></p>
1212716
1212716