http://qs321.pair.com?node_id=439079

Welcome to the 4th annual Favourite modules listing thread!

I think that after 2002, 2003, and 2004, you know the drill and the reason1. Let's list our current favourite modules!

Unfortunately, I have not used Perl as much as I would have liked the past 12 months. There is only one addition to my list, and it's a very exciting module by xmath that has made some neat features in DBIx::Simple possible2 and can really speed up some operations.

  1. Data::Alias, that aliases where perl would normally copy.
  2. LWP
  3. B::Deparse
  4. WWW::Mechanize, used it a lot this year
  5. DBD::SQLite, although theoretically this can't be above DBI, the new version of the SQLite library itself is so great, it bumps up the DBD as well
  6. Carp
  7. DBI, up just because I've used it more than the next three
  8. Template
  9. File::Slurp, which now properly handles dynamic files with reported sizes of 0, like /proc/cpuinfo
  10. Benchmark

What are YOUR favourite modules in current time and space?

Juerd # { site => 'juerd.nl', plp_site => 'plp.juerd.nl', do_not_use => 'spamtrap' }

1 If you really don't see the point, read the older versions of this thread. You WILL discover some exciting modules you hadn't used before!
2 To be honest, that was Data::Swap, but Data::Alias has taken over its features, adding the all new and shiny alias.

Replies are listed 'Best First'.
Re: Favourite modules March 2005
by brian_d_foy (Abbot) on Mar 13, 2005 at 17:29 UTC

    I'll leave off the usual suspects since everyone already is giving the love to DBI and Template.

    • Test::More - I do more testing work than "new coding" (which Randal gets to do). I'll just lump the entire Test::* namespace in with Test::More.
    • HTTP::Request - This has always been one of my favorites.
    • Mac::Glue - shout outs to Chris Nandor
    • Mini::CPAN and Mini::CPAN::Inject - I can put a private CPAN on a CD. I think I have a Perl Journal article on that (or it's coming up).
    • DateTime - why can't it be this easy all of the time?
    • Net::NNTPClient - I monitor a lot of mailing lists that show up on the perl.org NNTP server so I know what work I need to do.
    • IO::All is showing up in quick and dirty scripts, just because it's fun
    • Geo::IP - this module, which really means this database, kicks ass. Turn IP numbers into city names. I think I wrote about this for Perl Journal too.
    • Pod::Simple - the entire Pod namespace is helpful since I do a lot of Pod work.
    --
    brian d foy <bdfoy@cpan.org>
Re: Favourite modules March 2005
by merlyn (Sage) on Mar 13, 2005 at 13:58 UTC
Re: Favourite modules March 2005
by Joost (Canon) on Mar 13, 2005 at 14:08 UTC
Re: Favourite modules March 2005
by gaal (Parson) on Mar 13, 2005 at 12:52 UTC
Re: Favourite modules March 2005
by rlb3 (Deacon) on Mar 13, 2005 at 14:40 UTC
Re: Favourite modules March 2005
by zakzebrowski (Curate) on Mar 13, 2005 at 16:30 UTC
    • DBD::SQLite is my current favourite module to use. I'm thinking of doing a lightning talk at Yapc::NA::2005 this year about DBD::SQLite, because it has been a tremendous help to me. (Please reply to this node if you know of anyone that is going to present this topic... :))
    • DBI
    • CGI
    • File::Find - Not everyones cup of tea, but it is installed by default on all (even outdated) versions of perl, and it works fine for my purposes...


    ----
    Zak - the office
Re: Favourite modules March 2005
by trammell (Priest) on Mar 13, 2005 at 22:07 UTC
    Data::Dumper, which has saved my bacon on more than one occasion.
Re: Favourite modules March 2005
by gmpassos (Priest) on Mar 13, 2005 at 23:14 UTC
Re: Favourite modules March 2005 (Devel::Cover)
by grinder (Bishop) on Mar 14, 2005 at 09:09 UTC

    Many good modules listed so far, so here's a plug for my current favourite.

    I recently drank the Devel::Cover KoolAid™ and I'm finding it immensely gratifying. It picked up one borderline bug, and has helped me restructure a couple of methods to reduce the number of possible execution paths, which in turn simplifies coverage testing.

    Now I'm writing lots of fiddly tests to cover the fiddly edge cases, which, while I'm reasonably confident don't have bugs because I know they work already in production, it'll be a satisfying to have them all pinned down by tests.

    It would be nice to be able to view public coverage stats of CPAN modules. I think that would help Perl stay one step ahead of the competition.

    Yes, I know there's more to testing than mere coverage, but you have to have at least that in place.

    - another intruder with the mooring in the heart of the Perl

      It would be nice to be able to view public coverage stats of CPAN modules.

      The Kwalitee push is going to do public coverage of certain CPAN modules.

      . . . it'll be a satisfying to have them all pinned down by tests.

      So that, when you change something, you can run your tests and know you didn't bork anything. Now that's a good feeling. :-)

      Being right, does not endow the right to be rude; politeness costs nothing.
      Being unknowing, is not the same as being stupid.
      Expressing a contrary opinion, whether to the individual or the group, is more often a sign of deeper thought than of cantankerous belligerence.
      Do not mistake your goals as the only goals; your opinion as the only opinion; your confidence as correctness. Saying you know better is not the same as explaining you know better.

      It would be nice to be able to view public coverage stats of CPAN modules. I think that would help Perl stay one step ahead of the competition.

      Since grinder's post this development has come to pass and the stats are available for public view at CPANCover.

Re: Favourite modules March 2005
by sh1tn (Priest) on Mar 13, 2005 at 22:27 UTC
    Net::Ping, which makes the fastest scanner in one-liner.
    Timeout in 0.00? in conrast to the rest.


Re: Favourite modules March 2005
by pernod (Chaplain) on Mar 14, 2005 at 08:21 UTC

    Test::LectroTest: For letting Perl write my tests for me.

    Test::Differences: For letting Perl help me find errors in my data structures.

    Perl6::Pugs: For giving me something new to wrap my brain around.

    pernod
    --
    Mischief. Mayhem. Soap.

Favorite Module Lists
by BerntB (Deacon) on Mar 14, 2005 at 07:07 UTC
    My favorite module lists are at the neat Perl Advent site.
Re: Favourite modules March 2005
by ryantate (Friar) on Mar 14, 2005 at 23:41 UTC

    As modules mature, the coupling between modules is getting just a bit tighter, which I think is a good thing. For example, CGI::Prototype (linked below) is explicitly designed to work closely with Template Toolkit (ditto) and, of course, CGI.pm and Class::Prototyped. Other examples (though not on my list) include Maypole (Class::DBI, Template) and WWW::Mechanize (LWP).

    My favorites:

    • Plucene is an incredibly flexible and easy way to add full text search (If it doesn't seem easy, try reading the Perl.com article on Plucene. And note that "Plucene::Plugin::Analyzer::Porter" should be read "Plucene::Plugin::Analyzer::PorterAnalyzer".) It is also pretty Perlish despite being a Java port. But the Slashdot folks, among others, have had trouble getting Plucene to scale, and the module needs retooling before it is production quality (at least that's what one of the maintainers said on the mailing list). At the moment the maintainers have their hands full with other projects, although they may be doing work I don't know about (all have commitments to other marquee modules).

    • CGI::FormBuilder just passed 3.0, with a more modular and extensible design. It has saved me a lot of time processing Web forms, handling default values and validation in flexible manner and playing well with Template.

    • CGI::Prototype helped me consolidate nine CGI scripts into one, along with a small number of very short classes. It was actually very easy to set up. This despite its still-sparse documenation (merlyn has said more is coming).

    • Class::DBI has quickly made itself indespensible. Object inflation/deflation still seems unintuitive to some smart Perl programmers on the list, but this is a not a huge complaint, especially since it is so durn easy to subclass Class::DBI and there is a comprehensive set of callbacks.

    • Template (aka Template Toolkit)

Re: Favourite modules March 2005
by jmcnamara (Monsignor) on Mar 14, 2005 at 13:13 UTC
Re: Favourite modules March 2005
by Jenda (Abbot) on Mar 14, 2005 at 18:49 UTC
    • XML::Simple - parse the XML and forget it has ever been XML (DOM? SAX? WFT?)
    • Mail::Sender - you gotta love your baby, no matter how ugly it grows to be
    • Win32::Daemon::Simple - a MSWindows service anyone?
    • DBI+DBD::ODBC - havta get my hands on the data
    • Data::Dumper - the script misbehaves? What? OK, let's see whether the datastructures look the way I intended.
    • Config::IniHash - There are lots of similar modules. This is the one that works for me.

    Jenda
    We'd like to help you learn to help yourself
    Look around you, all you see are sympathetic eyes
    Stroll around the grounds until you feel at home
       -- P. Simon in Mrs. Robinson

Re: Favourite modules March 2005
by brycen (Monk) on Mar 14, 2005 at 18:10 UTC
Re: Favourite modules March 2005
by coppit (Beadle) on Mar 15, 2005 at 17:23 UTC
    I like CGI::Cache, since it can help people get massive speedups on CGI operations, and is dead simple to use.

    Benchmark::Timer is better than Benchmark because it will automatically figure out how long to run the code until the execution time is accurately measured.

    Module::Install is pretty awesome, if nothing else than because it provides a modular way to encapsulate common Makefile.PL code. (e.g. like Module::Install::GetProgramLocations for having the user provide paths to dependent applications on the system.)

Re: Favourite modules March 2005
by reyjrar (Hermit) on Mar 18, 2005 at 19:12 UTC
    I'd go with:
    • DBI for pretty much everything
    • CGI::Session - recently began using this extensively after being forced to use php for a year.
    • MIME::Lite use this a lot. Best interface for sending mail IMHO.
    • Data::Dumper - I use this ALL the time while developing
    • WWW::Mechanize
    • HTML::Parser - I love subclassing this module to create "MyParsers::SiteName::Page" interfaces to use with WWW::Mechanize.
    -brad..
Re: Favourite modules March 2005
by Anonymous Monk on Mar 14, 2005 at 11:36 UTC
    Odd that noone has mentioned them yet, but the 2 modules that appear in all my non -e programs haven't been mentioned yet:
    • strict
    • warnings
    I do a lot of system admin like stuff. Most of my programs are small, doing one specific thing (or are a filter), so except for the modules mentioned, I don't use modules often. I guess some of the more reoccuring modules include:
    • POSIX
    • IO::Socket
    • Fcntl

      Odd that noone has mentioned them yet, but the 2 modules that appear in all my non -e programs haven't been mentioned yet: * strict * warnings

      It's because they read the older threads, which say mentioning pragmas is kind of useless, because their popularity is implied :)

      Juerd # { site => 'juerd.nl', plp_site => 'plp.juerd.nl', do_not_use => 'spamtrap' }

Re: Favourite modules March 2005
by ForgotPasswordAgain (Priest) on Mar 17, 2005 at 12:05 UTC