Comprehensive Perl Archive Network
centralised and distributed collection of modules
4.5 Go, more than 13,000 modules, more than 6,000 authors
236 mirrors
« CPAN is the language, Perl is just its syntax » -- Audrey Tang
true strength of Perl
knowing the good modules
Getopt::Long
Pod::Usage
my %options = ( debug => 0, ); GetOptions(\%options, qw{ help|h! version|V! debug|d! config|c=s }) or pod2usage(0); pod2usage({ -verbose => 2, -exitval => 0, -noperldoc => 1 }) if $options{help};
Proc::Daemon
IPC::Run
my @cmd = qw(ps auwx); run \@cmd, \$input, \$output, \$errors or die "$cmd[0]: $?"
List::Util
first max maxstr min minstr reduce shuffle sum
List::MoreUtils
any all none notall each_array pairwise natatime mesh zip uniq minmax
Regexp::Common
while (<>) { /$RE{num}{real}/ and print "got a number"; /$RE{net}{IPv4}/ and print "got an IP address"; }
Regexp::Assemble
Text::Match::FastAlternatives
Time::HiRes
Date::Parse
DateTime
DateTime::Set, DateTime::Span
DateTime::Calendar:: Chinese, Christian, Coptic, FrenchRevolutionary,
Hebrew, Japanese, Mayan, Pataphysical
bignum, bigint, bigrat
PDL (Perl Data Language == MatLab in Perl)
Archiving
Archive::Tar, Archive::Zip, Compress:Zlib, Compress:Bzip2
Paths
File::Spec, Path::Class
File::Find::Rule, File::Next, File::Wildcard
File::HomeDir, File::ShareDir
Content
File::Slurp, File::Tail, File::Temp
POE (Perl Object Environment)
XML::LibXML, XML::LibXSLT
my $parser = XML::LibXML->new; my $doc = $parse->parse_file($file); my ($node) = $doc->findnodes("/root/path/node[1]");
XML::SAX
XML::Twig
XML::Tiny
Data::Dumper, Storable
YAML, YAML::Syck, YAML::XS
YAML::DumpFile($file, \%complex_structure); my $struct = YAML::LoadFile($file);
JSON, JSON::Syck, JSON::XS
my $struct = from_json( $request->content ); $response->add_content( to_json(\%data) );
MIME::Lite, MIME::Parser, Mail::Box
Email::Simple, Email::MIME, Email::Folder all the modules
from the Perl Email Project
Net::SMTP, Net::POP3, Net::IMAP, IMAP::Admin
LWP::UserAgent, LWP::Simple
my $page = get($url);
LWP::Parallel, HTTP::Async
WWW::Mechanize
Web::Scraper
HTTP::Daemon
HTTP::Server::Simple
HTTP::Server::Brick
my $server = HTTP::Server::Brick->new( port => 8888 ); $server->mount("/files" => { path => "/path/to/files" }); $server->mount("/user" => { handler => \&process_user }); $server->start;
CGI, CGI::Simple, CGI::PathInfo
HTML::Parser
HTML::TreeBuilder
WebService::Validator::HTML::W3C
Office
Spreadsheet::WriteExcel, Spreadsheet::ParseExcel
OpenOffice::OODoc, Spreadsheet::ReadSXC
Spreadsheet::Read, Spreadsheet::Write
PDF::API2
Images
GD, Image::Magick, Gimp, Imager
Protocols
Net::FTP, Net::SSH, Net::SCP, Net:LDAP, Net::NNTP,
Net::RADIUS, Net::TacacsPlus, Net::SIP
Net::DNS, Net::Ping, Net::DHCP
Low level
Net::Pcap, Net::Frame, Net::Packet
Text::CSV_XS
DBI
MySQL, PostgreSQL, SQLite, Oracle, JDBC, ODBC, Sybase, ADO DB, Unify and much more...
DBI::Proxy, DBD::Gofer
DBIx::Simple
Tangram, Alzabo, SPOPS
Class::DBI, DBIx::Class
Rose::DB::Object, DBIx::DataModel, Fey::ORM
HTML::Template
Petal
Mason
Template Toolkit
Maypole
Catalyst
Jifty
Test::More, Test::Builder
Devel::Cover
Test::Deep, Test::LongString
Test::Exception, Test::NoWarnings
Test::MockModule, Test::MockObject
Test::Class, Test::Unit
Test::LectroTest
Module::Starter
ack
Perl::Critic
Perl::Tidy
XXX
Devel::SimpleTrace
Devel::Graph
Devel::TraceLoad, Devel::TraceUse
Devel::LeakTrace
Devel::ebug
Languages
Inline : C, Java, Python, Ruby, Tcl, Befunge, Lua
External libraries
XS
Devel::PPPort
SWIG
P5NCI
Graphical interfaces
Tk, Gtk, WxWidgets, Qt, Prima
GUI natives : Win32, Aqua (Mac OS X), X11
Native OS API
Mac::Carbon, Mac::Glue
Win32, Win32::OLE, W2RK::WMI
CPAN is full of win