=encoding iso-8859-1 =meta title Le meilleur du CPAN =meta author Sébastien Aperghis-Tramoni, sebastien@aperghis.net =meta presdate Journées Perl 2008, Albi = CPAN +>> * I * collection centralisée et distribuée de modules * L * 4.5 Go, plus de 13000 modules, plus de 6000 auteurs * 236 miroirs - = CPAN +>> * I<« CPAN is the language, Perl is just its syntax »> -- Audrey Tang * véritable richesse de Perl - = Problème +>> * connaître les bons modules - = Shell +>> * C * C * =begin filter perl 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}; =end filter perl - = Programmes +>> * C * C * =begin filter perl my @cmd = qw(ps auwx); run \@cmd, \$input, \$output, \$errors or die "$cmd[0]: $?" =end filter perl - = Listes +>> * C * first max maxstr min minstr reduce shuffle sum * C * any all none notall each_array pairwise natatime mesh zip uniq minmax - = Expressions régulières +>> * C =begin filter perl while (<>) { /$RE{num}{real}/ and print "got a number"; /$RE{net}{IPv4}/ and print "got an IP address"; } =end filter perl * C * C - = Date et heure +>> * C * C * C * C, C * C Chinese, Christian, Coptic, FrenchRevolutionary, Hebrew, Japanese, Mayan, Pataphysical - = Nombres +>> * C, C, C * PDL (Perl Data Language == MatLab en Perl) - = Fichiers +>> * Archivage +>> * C, C, C, C - * Chemins +>> * C, C * C, C, C * C, C - - = Fichiers +>> * Contenu +>> * C, C, C - - = Objets +>> * C * C, C, C * C, C =begin filter perl package CheckingAccount; use Moose; extends 'BankAccount'; has 'overdraft_account' => (isa => 'BankAccount', is => 'rw'); before 'withdraw' => sub { ... }; =end filter - = Coopération d'objets +>> * POE (Perl Object Environment) * » L - = XML +>> * C, C =begin filter perl my $parser = XML::LibXML->new; my $doc = $parse->parse_file($file); my ($node) = $doc->findnodes("/root/path/node[1]"); =end filter * C * C * C - = Sérialisation +>> * C, C * C, C, C =begin filter perl YAML::DumpFile($file, \%complex_structure); my $struct = YAML::LoadFile($file); =end filter * C, C, C =begin filter perl my $struct = from_json( $request->content ); $response->add_content( to_json(\%data) ); =end filter - = Courriel +>> * C, C, C * C, C, C et tous les modules du I * C, C, C, C - = Web, côté client +>> * C, C * =begin filter perl my $page = get($url); =end filter * C, C * C * C - = Web, côté serveur +>> * C * C * C =begin filter perl my $server = HTTP::Server::Brick->new( port => 8888 ); $server->mount("/files" => { path => "/path/to/files" }); $server->mount("/user" => { handler => \&process_user }); $server->start; =end filter * C, C, C * C - = HTML +>> * C * C * C - = Documents +>> * Bureautique +>> * C, C * C, C * C, C * C - * Images +>> * C, C, C, C - - = Réseau +>> * Protocoles réseau +>> * C, C, C, C, C, C, C, C * C, C, C - * Réseau bas niveau +>> * C, C, C - - = Bases de données +>> * C * C * MySQL, PostgreSQL, SQLite, Oracle, JDBC, ODBC, Sybase, ADO DB, Unify et encore plus... * C, C * C - = ORM +>> * C, C, C * C, C * C, C, C - - = Templates +>> * C * Petal * Mason * Template Toolkit - = Frameworks web modernes +>> * Maypole * Catalyst * Jifty - = Tests +>> * C, C * C * C, C * C, C * C, C * C, C * C - = Outils +>> * C * C * C * C - = Debugging +>> * C * C * C * C * C, C * C * C - = Le monde extérieur +>> * Langages +>> * Inline : C, Java, Python, Ruby, Tcl, Befunge, Lua - * Bibliothèques externes +>> * XS * C * SWIG * P5NCI - - = Interfaces +>> * Interfaces graphiques +>> * Tk, Gtk, WxWidgets, Qt, Prima * GUI natives : Win32, Aqua (Mac OS X), X11 - * Pilotage natif des OS +>> * C, C * C, C, C - - = Conclusion +>> * CPAN, c'est bon, mangez-en - = Questions ? = Merci