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