YAPC day 2: Simon's ten modules

jdavidb on 2002-06-27T15:49:43

Programming is very repetitive, so you want CPAN. (Hence my presence in this community.) Thus, we all trust Simon's opinion to know which modules are good. :) (I trust Simon; do you?)

  • Bundle::CPAN
  • Bundle::LWP
  • Mail::Send
  • MLDBM
  • Date::Calc
  • DBI
  • Data::Dumper
  • POE
  • File::Spec
  • XML::Simple

Bundle::CPAN is cheating, so says Simon, because it has a LOT of modules in it. I know I've recently grown to love Term::ReadLine, etc. I always install a group of things including Bundle::CPAN, Bundle::DBI, Bundle::DBD::CSV, and something else I don't recall at the moment, so my perl installations always have a lot of nice things around I'm not aware of but often have a sudden need for.

Net::POP3::Client was mentioned as a higher-level module than the Net::POP3 that comes with libnet. (libnet is one of the joys you get with Bundle::CPAN).

Simon says if he rewrote this talk today he would say CPANPLUS instead of CPAN. I already know the joys of CPAN.pm, so I'm not going to transcribe them here.

Oh, yeah! Bundle::LWP is the other one I always install. Simon doesn't go anywhere without it, either. LWP::Simple is the core and will do 90% of what you want.

Mail::Send will abstract your mail process so you don't have to worry about whether you have sendmail or not. I'm glad to finally have a concrete recommendataion about which module to use for that.

MLDBM is multi-level DBMs. I've never used DBMs, although I'm well-familiar with the concept. Simon ranks MLDBM as the best way to dump data structures to disk. I guess I need to look at that instead of Data::Dumper or whatever it is I'm using in such situations.

Date::Calc. I like Time::Piece better, myself. Date::Calc has Delta_days, which is what I usually need it for. There's Decode_Date_* to parse the date. Simon said this was his preferred date manipulation module "this week." I know the feeling, although I haven't felt it since I discovered Time::Piece.

DBI: I know it well. Geoff just said you should, too, in the mod_perl talk. I'm not going to transcribe this here.

Wait, Simon mentioned Data::Dumper as well as MLDBM. So I guess they both have their place.

POE: I haven't done this yet, but it's on my list. Network clients and servers, things that sit in event loops, state machines, etc. should all use POE. "Lets you do threads without having to do threads." "Growing into a small operating system." (Sounds like emacs, must be good.)

File::Spec. I don't use it; Simon wishes I did. Despite being an avid Mac user, I've only run into these issues once. Simon's begging me to use this, though.

XML::Simple is also sort of like Data::Dumper. I think XML::TreeBuilder works a little more the way I think (tried to write something like it one time). But I'm still not using much XML yet.