SlideShare una empresa de Scribd logo
1 de 49
Descargar para leer sin conexión
Introduction to CPAN
    Living off other people’s code
Nitpicking
• “Perl” is the language specification
• and the noun (“the Perl community”, “a
  Perl program”)
• and the distribution (“the Perl tar ball”)
• “perl” is a compiler implementing the
  language specification (currently, Perl 5)
• There is no “PERL”
Running Perl

• Compiler
• Tools
• Standard library
• CPAN
 • and its configuration
Running Perl
          Compiler
• the “perl” bit
• jit compiler
• configuration assembled at build time, most
  (all?) of it can be overridden at runtime
• namely, the library path to use
Running Perl
           Tools
• documentation
• header extraction
• module jump-starters
• debugger
• profiler
Running Perl
     Standard Library

• modules distributed with Perl
• Module::CoreList
• 602 modules as of 5.8.8
Running Perl
         Local build
• Perl pre-installed everywhere
• vendor may overwrite your modifications
• you may break stuff
• always use a local package
Running Perl
          Local build
• Compile:
  sh Configure -de -Dusethreads
  make && make test && make install
  (cd /usr/include && /usr/local/
  bin/h2ph *.h sys/*.h)

• uses /usr/local by default
• good enough most of the times
Running Perl
         Local build
• Common options:
 • -Dcc=gcc
 • -Dprefix=/opt/builds/perl
 • -Dlocincpth=”/foo/bar/include”
 • -Dloclibpth=”/foo/bar/lib”
Running Perl
         Local build

•Module lookup paths:
 lib/perl5
      /5.8.8
          /darwin-thread-multi
      /site_perl
Running Perl
           CPAN
• Comprehensive Perl Archive Network
• Source code repository for everything Perl
• Modules, but also...
 • Perl itself
 • Several tools/programs written in Perl
http://www.cpan.org/
Why CPAN
• laziness
• re-inventing the wheel (not)
• code reuse
• tested and tried
• around 250 mirrors worldwide
• approximately 13000 modules
 • lots of crap...
How to use CPAN

• Manually
• There’s a module for it
  perl -MCPAN -e shell

• There’s a script for it
  cpan
CPAN manual usage
• Search for a module
  • http://search.cpan.org/
• Search for its dependencies
  • http://cpandeps.cantrell.org.uk/
• Start with dependencies and install one by
  one
• Tedious and time-consuming (e.g., Catalyst
  depends on hundreds of modules)
http://search.cpan.org/
http://kobesearch.cpan.org/
http://cpandeps.cantrell.org.uk/
cpandeps: version
CPAN manual usage
                  (continued)


• Organization:
  authors
  modules
      by-author
      by-category
      by-module
  ports
  src
  scripts
  doc
CPAN manual usage
              (continued)


•Procedure:
  tar zxf Sample-Module-1.0.tar.gz
  cd Sample-Module-1.0
  perl Makefile.PL
  make
  make test
  make install
The CPAN module
• Lots of built-in facilities
 • search
 • automatic installation of dependencies
 • look inside a distribution’s tar ball
 • highly configurable
• You can use it in your programs (have a
  look at the source for cpandeps)
The CPAN module
              (continued)


•Usage:
  perl -MCPAN -e shell
  i Sample::Module
  i /ample/i
  look Sample::Module
  install Sample::Module
  force install Sample::Module (!!!)
CPAN Configuration

• in $PERL5LIB/CPAN/Config.pm
• can be hand-edited or...
• using o conf in the CPAN shell
• it’s just a Perl module
CPAN Configuration
                 (continued)




• Location of several utilities CPAN uses
  ftp, gpg, gzip, lynx, make, ncftp, pager,
  tar, unzip

• Parameters for some of these
  e.g., make_arg, ftp_passive
CPAN Configuration
                (continued)



• CPAN parameters
  auto_commit, build_dir, cpan_home,
  histfile, prerequisites, scan_cache

• build parameters
  makepl_arg

• other
CPAN Configuration
                (continued)


• the urllist lists the CPAN mirrors we’ll
  use
• kept in a hash, %CPAN::Config
• the configuration is itself Perl code
• override system-wide parameters via
  MyConfig.pm
The CPAN module
               (continued)

•More usage:
  perl -MCPAN -e ‘install A::Module’
  o conf
  o conf http_proxy http://proxy:port/
  o conf commit
  o conf init /REGEXP/
  $PERL5LIB/CPAN/Config.pm
  failed
  test
The cpan script


• $PERL5BIN/cpan
 cpan Some::Module
 cpan .
Mirroring CPAN

• A full mirror is around 7gb
• CPAN::Mini and minicpan
 • only the newest version of every module
 • ~800mb
More usage

• Passing arguments to perl Makefile.PL
• Finding outdated modules
• Adding to $PERL5LIB
• Maintaining your own $PERL5LIB
• Smart urllist
Passing arguments to
perl Makefile.pl
• no standard
• remember Makefile.PL is a Perl program :)
• and there’s usually a README file or
  similar :)
• usually you’ll be able do define environment
  variables
  CC=gcc perl Makefile.pl
  CC=gcc cpan Some::Module
Finding outdated
         modules

• r command on the CPAN shell
• upgrade command to perform the actual
  upgrade
• take a string or a regexp as parameters
Adding to $PERL5LIB

• in your code:
  use lib qw( /opt/permodules /home/pfig/perllib );


• set PERL5LIB in your profile or startup
  scripts:
  export PERL5LIB=/opt/perlmodules:/home/pfig/perllib
Maintaining your own
   $PERL5LIB

• Override the default system installation
• How can i still enjoy the CPAN goodness?
• Don’t piss off your sysadmin
Maintaining your own
   $PERL5LIB
• Getting -p ~/perl/bin
  mkdir
          ready:
                      
    ~/perl/man/man1 ~/perl/man/man3
  mkdir -p ~/.cpan/CPAN
  cp $PERL5LIB/CPAN/Config.pm 
    ~/.cpan/CPAN/MyConfig.pm

• Debian uses /etc/perl. There’s a special
  place in hell for them.
Maintaining your own
   $PERL5LIB
• Edit MyConfig.pm
  ‘build_dir’         => q[/home/pfig/.cpan/build]
  ‘cpan_home’         => q[/home/pfig/.cpan]
  ‘histfile’          => q[/home/pfig/.cpan/histfile]
  ‘keep_source_where’ => q[/home/pfig/.cpan/sources]
  ‘makepl_arg’ => q[PREFIX=~/perl
                    LIB=~/perl/lib
                    INSTALLMAN1DIR=~/perl/man/man1
                    INSTALLMAN3DIR=~/perl/man/man3
                    INSTALLSCRIPT=~/perl/bin
                    INSTALLBIN=~/perl/bin]
  ‘mbuildpl_arg’      => q[--prefix ~/perl]
Maintaining your own
   $PERL5LIB
• Set up your environment
  PERL5LIB=~/perl/lib
  PERL5MAN=~/perl/man
  PATH=$PATH:~/perl/bin

  export PERL5LIB PERL5MAN PATH

• Done!
• You now have all the CPAN shininess and
  you can get rid of use lib pragmas
Smart urllist
• have a local mini mirror
• have the last url of your urllist point to
  it via file://
• CPAN will always download its indexes
  from one of the sites but it will try to get
  the package from your local disk.
• you get up-to-date indexes with no need to
  remember to refresh the mirror.
Danger, Will Robinson!
• if you run cpan without checking your
  path, you may be running the vendor’s cpan
  (because chances are /usr/bin appears in
  your path before /usr/local/bin)
• the same goes for perl -MCPAN
• And, if installing manually, the perl you use
  to run Makefile.PL
Which modules to use
• CPAN testers
  • http://www.cpantesters.org/
• CPANTS
  • http://cpants.perl.org/
• Kwalitee
  • http://cpants.perl.org/kwalitee.html
• Reviews on CPAN
• Ask around. Really.
CPAN testers
Kwalitee
Other stuff

• Bugs
  http://rt.cpan.org/
• Contributing to CPAN
  PAUSE
http://rt.cpan.org/
http://pause.cpan.org/
Resources
•   http://search.cpan.org/

•   http://cpan.org/misc/cpan-faq.html

•   http://qa.perl.org/

•   http://cpandeps.cantrell.org.uk/

•   http://use.perl.org/

•   http://perlmonks.org/

•   perldoc
Thanks to...
• In no particular order:
 • David Cantrell
    http://www.cantrell.org.uk/david/tech/

 • London.pm
 • Pedro Melo
    http://simplicidade.org/notes/

 • Simon Wistow
    http://thegestalt.org/simon/

 • And Wizards Larry Wall and the other
    Perl
          of course
A local shop, for local
         people
•http://london.pm.org/
• Free beer every month!
• London Perl Workshop (yearly, free)
• london.pm’s tech meetings (free, twice a
  year or thereabouts)

Más contenido relacionado

Destacado

PERL Unit 6 regular expression
PERL Unit 6 regular expressionPERL Unit 6 regular expression
PERL Unit 6 regular expression
Binsent Ribera
 

Destacado (7)

Perl in Teh Cloud
Perl in Teh CloudPerl in Teh Cloud
Perl in Teh Cloud
 
My life as a beekeeper
My life as a beekeeperMy life as a beekeeper
My life as a beekeeper
 
The problem with Perl
The problem with PerlThe problem with Perl
The problem with Perl
 
Perl on Amazon Elastic MapReduce
Perl on Amazon Elastic MapReducePerl on Amazon Elastic MapReduce
Perl on Amazon Elastic MapReduce
 
30 Minutes To CPAN
30 Minutes To CPAN30 Minutes To CPAN
30 Minutes To CPAN
 
PERL Unit 6 regular expression
PERL Unit 6 regular expressionPERL Unit 6 regular expression
PERL Unit 6 regular expression
 
Logic Progamming in Perl
Logic Progamming in PerlLogic Progamming in Perl
Logic Progamming in Perl
 

Similar a CPAN Training

MyCPAN (Frozen Perl 2008 Lightning Talk)
MyCPAN (Frozen Perl 2008 Lightning Talk)MyCPAN (Frozen Perl 2008 Lightning Talk)
MyCPAN (Frozen Perl 2008 Lightning Talk)
brian d foy
 
CPAN Packager
CPAN PackagerCPAN Packager
CPAN Packager
techmemo
 
Modern Commandline Tool
Modern Commandline ToolModern Commandline Tool
Modern Commandline Tool
Yuji Shimada
 

Similar a CPAN Training (20)

Smoking docker
Smoking dockerSmoking docker
Smoking docker
 
perlbrew yapcasia 2010
perlbrew yapcasia 2010perlbrew yapcasia 2010
perlbrew yapcasia 2010
 
MyCPAN ( LA.pm, September 2007 )
MyCPAN ( LA.pm, September 2007 )MyCPAN ( LA.pm, September 2007 )
MyCPAN ( LA.pm, September 2007 )
 
MyCPAN (Frozen Perl 2008 Lightning Talk)
MyCPAN (Frozen Perl 2008 Lightning Talk)MyCPAN (Frozen Perl 2008 Lightning Talk)
MyCPAN (Frozen Perl 2008 Lightning Talk)
 
Perlbrew
PerlbrewPerlbrew
Perlbrew
 
perlall
perlallperlall
perlall
 
CPAN Packager
CPAN PackagerCPAN Packager
CPAN Packager
 
Perl in RPM-Land
Perl in RPM-LandPerl in RPM-Land
Perl in RPM-Land
 
Perlmania_Study - CPAN
Perlmania_Study - CPANPerlmania_Study - CPAN
Perlmania_Study - CPAN
 
Modern Perl toolchain (help building microservices)
Modern Perl toolchain (help building microservices)Modern Perl toolchain (help building microservices)
Modern Perl toolchain (help building microservices)
 
Prepare for PHP Test Fest 2009
Prepare for PHP Test Fest 2009Prepare for PHP Test Fest 2009
Prepare for PHP Test Fest 2009
 
cPanel conf 2017 - How to Speak cPanel
cPanel conf 2017 - How to Speak cPanelcPanel conf 2017 - How to Speak cPanel
cPanel conf 2017 - How to Speak cPanel
 
Programming
ProgrammingProgramming
Programming
 
Os Treat
Os TreatOs Treat
Os Treat
 
Deploying Symfony | symfony.cat
Deploying Symfony | symfony.catDeploying Symfony | symfony.cat
Deploying Symfony | symfony.cat
 
Modern Commandline Tool
Modern Commandline ToolModern Commandline Tool
Modern Commandline Tool
 
Revisiting ppm
Revisiting ppmRevisiting ppm
Revisiting ppm
 
21st Century CPAN Testing: CPANci
21st Century CPAN Testing: CPANci21st Century CPAN Testing: CPANci
21st Century CPAN Testing: CPANci
 
Approaching package manager
Approaching package managerApproaching package manager
Approaching package manager
 
How I hack on puppet modules
How I hack on puppet modulesHow I hack on puppet modules
How I hack on puppet modules
 

Último

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 

Último (20)

The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 

CPAN Training

  • 1. Introduction to CPAN Living off other people’s code
  • 2. Nitpicking • “Perl” is the language specification • and the noun (“the Perl community”, “a Perl program”) • and the distribution (“the Perl tar ball”) • “perl” is a compiler implementing the language specification (currently, Perl 5) • There is no “PERL”
  • 3. Running Perl • Compiler • Tools • Standard library • CPAN • and its configuration
  • 4. Running Perl Compiler • the “perl” bit • jit compiler • configuration assembled at build time, most (all?) of it can be overridden at runtime • namely, the library path to use
  • 5. Running Perl Tools • documentation • header extraction • module jump-starters • debugger • profiler
  • 6. Running Perl Standard Library • modules distributed with Perl • Module::CoreList • 602 modules as of 5.8.8
  • 7. Running Perl Local build • Perl pre-installed everywhere • vendor may overwrite your modifications • you may break stuff • always use a local package
  • 8. Running Perl Local build • Compile: sh Configure -de -Dusethreads make && make test && make install (cd /usr/include && /usr/local/ bin/h2ph *.h sys/*.h) • uses /usr/local by default • good enough most of the times
  • 9. Running Perl Local build • Common options: • -Dcc=gcc • -Dprefix=/opt/builds/perl • -Dlocincpth=”/foo/bar/include” • -Dloclibpth=”/foo/bar/lib”
  • 10. Running Perl Local build •Module lookup paths: lib/perl5 /5.8.8 /darwin-thread-multi /site_perl
  • 11. Running Perl CPAN • Comprehensive Perl Archive Network • Source code repository for everything Perl • Modules, but also... • Perl itself • Several tools/programs written in Perl
  • 13. Why CPAN • laziness • re-inventing the wheel (not) • code reuse • tested and tried • around 250 mirrors worldwide • approximately 13000 modules • lots of crap...
  • 14. How to use CPAN • Manually • There’s a module for it perl -MCPAN -e shell • There’s a script for it cpan
  • 15. CPAN manual usage • Search for a module • http://search.cpan.org/ • Search for its dependencies • http://cpandeps.cantrell.org.uk/ • Start with dependencies and install one by one • Tedious and time-consuming (e.g., Catalyst depends on hundreds of modules)
  • 20. CPAN manual usage (continued) • Organization: authors modules by-author by-category by-module ports src scripts doc
  • 21. CPAN manual usage (continued) •Procedure: tar zxf Sample-Module-1.0.tar.gz cd Sample-Module-1.0 perl Makefile.PL make make test make install
  • 22. The CPAN module • Lots of built-in facilities • search • automatic installation of dependencies • look inside a distribution’s tar ball • highly configurable • You can use it in your programs (have a look at the source for cpandeps)
  • 23. The CPAN module (continued) •Usage: perl -MCPAN -e shell i Sample::Module i /ample/i look Sample::Module install Sample::Module force install Sample::Module (!!!)
  • 24. CPAN Configuration • in $PERL5LIB/CPAN/Config.pm • can be hand-edited or... • using o conf in the CPAN shell • it’s just a Perl module
  • 25. CPAN Configuration (continued) • Location of several utilities CPAN uses ftp, gpg, gzip, lynx, make, ncftp, pager, tar, unzip • Parameters for some of these e.g., make_arg, ftp_passive
  • 26. CPAN Configuration (continued) • CPAN parameters auto_commit, build_dir, cpan_home, histfile, prerequisites, scan_cache • build parameters makepl_arg • other
  • 27. CPAN Configuration (continued) • the urllist lists the CPAN mirrors we’ll use • kept in a hash, %CPAN::Config • the configuration is itself Perl code • override system-wide parameters via MyConfig.pm
  • 28. The CPAN module (continued) •More usage: perl -MCPAN -e ‘install A::Module’ o conf o conf http_proxy http://proxy:port/ o conf commit o conf init /REGEXP/ $PERL5LIB/CPAN/Config.pm failed test
  • 29. The cpan script • $PERL5BIN/cpan cpan Some::Module cpan .
  • 30. Mirroring CPAN • A full mirror is around 7gb • CPAN::Mini and minicpan • only the newest version of every module • ~800mb
  • 31. More usage • Passing arguments to perl Makefile.PL • Finding outdated modules • Adding to $PERL5LIB • Maintaining your own $PERL5LIB • Smart urllist
  • 32. Passing arguments to perl Makefile.pl • no standard • remember Makefile.PL is a Perl program :) • and there’s usually a README file or similar :) • usually you’ll be able do define environment variables CC=gcc perl Makefile.pl CC=gcc cpan Some::Module
  • 33. Finding outdated modules • r command on the CPAN shell • upgrade command to perform the actual upgrade • take a string or a regexp as parameters
  • 34. Adding to $PERL5LIB • in your code: use lib qw( /opt/permodules /home/pfig/perllib ); • set PERL5LIB in your profile or startup scripts: export PERL5LIB=/opt/perlmodules:/home/pfig/perllib
  • 35. Maintaining your own $PERL5LIB • Override the default system installation • How can i still enjoy the CPAN goodness? • Don’t piss off your sysadmin
  • 36. Maintaining your own $PERL5LIB • Getting -p ~/perl/bin mkdir ready: ~/perl/man/man1 ~/perl/man/man3 mkdir -p ~/.cpan/CPAN cp $PERL5LIB/CPAN/Config.pm ~/.cpan/CPAN/MyConfig.pm • Debian uses /etc/perl. There’s a special place in hell for them.
  • 37. Maintaining your own $PERL5LIB • Edit MyConfig.pm ‘build_dir’ => q[/home/pfig/.cpan/build] ‘cpan_home’ => q[/home/pfig/.cpan] ‘histfile’ => q[/home/pfig/.cpan/histfile] ‘keep_source_where’ => q[/home/pfig/.cpan/sources] ‘makepl_arg’ => q[PREFIX=~/perl LIB=~/perl/lib INSTALLMAN1DIR=~/perl/man/man1 INSTALLMAN3DIR=~/perl/man/man3 INSTALLSCRIPT=~/perl/bin INSTALLBIN=~/perl/bin] ‘mbuildpl_arg’ => q[--prefix ~/perl]
  • 38. Maintaining your own $PERL5LIB • Set up your environment PERL5LIB=~/perl/lib PERL5MAN=~/perl/man PATH=$PATH:~/perl/bin export PERL5LIB PERL5MAN PATH • Done! • You now have all the CPAN shininess and you can get rid of use lib pragmas
  • 39. Smart urllist • have a local mini mirror • have the last url of your urllist point to it via file:// • CPAN will always download its indexes from one of the sites but it will try to get the package from your local disk. • you get up-to-date indexes with no need to remember to refresh the mirror.
  • 40. Danger, Will Robinson! • if you run cpan without checking your path, you may be running the vendor’s cpan (because chances are /usr/bin appears in your path before /usr/local/bin) • the same goes for perl -MCPAN • And, if installing manually, the perl you use to run Makefile.PL
  • 41. Which modules to use • CPAN testers • http://www.cpantesters.org/ • CPANTS • http://cpants.perl.org/ • Kwalitee • http://cpants.perl.org/kwalitee.html • Reviews on CPAN • Ask around. Really.
  • 44. Other stuff • Bugs http://rt.cpan.org/ • Contributing to CPAN PAUSE
  • 47. Resources • http://search.cpan.org/ • http://cpan.org/misc/cpan-faq.html • http://qa.perl.org/ • http://cpandeps.cantrell.org.uk/ • http://use.perl.org/ • http://perlmonks.org/ • perldoc
  • 48. Thanks to... • In no particular order: • David Cantrell http://www.cantrell.org.uk/david/tech/ • London.pm • Pedro Melo http://simplicidade.org/notes/ • Simon Wistow http://thegestalt.org/simon/ • And Wizards Larry Wall and the other Perl of course
  • 49. A local shop, for local people •http://london.pm.org/ • Free beer every month! • London Perl Workshop (yearly, free) • london.pm’s tech meetings (free, twice a year or thereabouts)