Dual-license your content for inclusion in The Perl 5 Wiki using this HOWTO, or join us for a chat on irc.freenode.net#PerlNet.

Recommended Perl Modules

From PerlNet

Jump to: navigation, search

Too many modules on CPAN do the same thing. Which one is better? I wish there was a site that lists the good modules for each category.

The Perl Advent Calendar and the phalanx 100 modules may give some idea of which modules are popular on CPAN.

We're trying to see how to be make sure people can find modules on CPAN more easily. See Finding a Module on CPAN.

See also Task::Kensho

Contents

World Wide Web

Database

General Modules (not related to Web)

  • autodie - Replace functions with equivalents that succeed or die, supporting a rich exception model.
  • File::Find - core module, which has some serious interface limitations (cannot be instantiated, and cannot be easily interrupted).
    • File::Find::Object - an Object-Oriented, non-core alternative to File::Find that overcomes its inherent limitations.
  • Term::Readkey
  • Getopt::Long
  • Pod::Usage
  • CPAN::Mini
  • Module::Build
  • PAR
  • Data::UUID (does not compile with Visual C++)
  • IO::Stringy - I/O on in-core objects like strings and arrays. Even if you don't want to use this personally, it is a prerequisite for a number of other modules.
  • File::MimeInfo - identifies MIME type of files using the robust FreeDesktop.org Shared MIME Info specification; has nothing to do with generating or parsing e-mail MIME streams. Think of it as an enhanced version of File::MMagic.
  • Tie::Hash::Indexed - fast XS implementation of tied hash with ordered keys
  • Log::Log4perl - a perl implementation of Log4j. Extremely powerful logging facilities, cleanly separating the concerns of when to log, where to log and what to log.

Image Processing

  • Image::Magick - feature-complete, but can be a pain to compile and install.
  • GD - built on top of gd C library
  • Imager

Date/Time

  • DateTime - a comprehensive framework for parsing, handling and formatting dates and times in Perl.
  • Date::Parse - excellent date/time-parsing module
  • Date::Format - output dates/times in any format
  • Time::HiRes - high-resolution (micro-second) timer module

GUI

  • Wx - interface to the wxWidgets cross-platform GUI toolkit (formerly known as WxWindows). A better link is at sourceforge.net where the project is hosted.
  • GTK - interface to the Gimp Tool Kit (GTK+) libraries which were orginally written for Gimp but are now used throughout the Gnome Desktop Environment.
  • Tk - Interface to the Tk toolkit. Started out on UNIX-like platforms but now works fine on the windows platform.

XML

Also see the Perl XML FAQ
  • XML::LibXML - a feature-rich and high-performance module to parse XML based on libxml2, which provides DOM/XPath, a SAX-based parser, and pull-parser interfaces. Handles namespaces well, and supports many recent standards.
  • XML::Parser - most basic access, built on top of James Clark's expat C library. XML-LibXML (see above) is normally preferable.
  • XML::Simple - turn XML into a hash/array, and back. API is pretty big now, belying it's 'Simple' moniker.
  • RPC::XML - perl implementation of the XML-RPC standard. Has some minor bugs, but a useful start.
  • XML::Writer - a module for incrementally generating XML with a convenient interface.
  • XML::Twig - a module that let's you handle huge XML in smaller chunks (twigs). More perlish interface than DOM.
  • XML::Rules - produce a datastructure similar to XML::Simple, but with much more detailed control, also allowing you to handle twigs as they are being parser. When allowed to infer the rules from example XMLs or a DTD, even simpler than XML::Simple.

Perl Development

  • Devel::Cover - measures how much of your code is actually tested.
  • tidyview - not a module per-se, but an application to help you format your code with perltidy.

Other Lists