SlideShare ist ein Scribd-Unternehmen logo
1 von 49
Downloaden Sie, um offline zu lesen
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)

Weitere ähnliche Inhalte

Was ist angesagt?

EBPF and Linux Networking
EBPF and Linux NetworkingEBPF and Linux Networking
EBPF and Linux NetworkingPLUMgrid
 
Static partitioning virtualization on RISC-V
Static partitioning virtualization on RISC-VStatic partitioning virtualization on RISC-V
Static partitioning virtualization on RISC-VRISC-V International
 
Linux Linux Traffic Control
Linux Linux Traffic ControlLinux Linux Traffic Control
Linux Linux Traffic ControlSUSE Labs Taipei
 
Superscalar & superpipeline processor
Superscalar & superpipeline processorSuperscalar & superpipeline processor
Superscalar & superpipeline processorMuhammad Ishaq
 
Soc architecture and design
Soc architecture and designSoc architecture and design
Soc architecture and designSatya Harish
 
Peephole optimization
Peephole optimization Peephole optimization
Peephole optimization Mvidhya9
 
INTERRUPT LATENCY AND RESPONSE OF THE TASK
INTERRUPT LATENCY AND RESPONSE OF THE TASKINTERRUPT LATENCY AND RESPONSE OF THE TASK
INTERRUPT LATENCY AND RESPONSE OF THE TASKJOLLUSUDARSHANREDDY
 
Amazon Elastic Fabric Adapter: Anatomy, Capabilities, and the Road Ahead
Amazon Elastic Fabric Adapter: Anatomy, Capabilities, and the Road AheadAmazon Elastic Fabric Adapter: Anatomy, Capabilities, and the Road Ahead
Amazon Elastic Fabric Adapter: Anatomy, Capabilities, and the Road Aheadinside-BigData.com
 
Soluzioni software per la Lean Production
Soluzioni software per la Lean ProductionSoluzioni software per la Lean Production
Soluzioni software per la Lean ProductionTeamSystem
 
SystemVerilog OOP Ovm Features Summary
SystemVerilog OOP Ovm Features SummarySystemVerilog OOP Ovm Features Summary
SystemVerilog OOP Ovm Features SummaryAmal Khailtash
 
Choosing Right Garbage Collector to Increase Efficiency of Java Memory Usage
Choosing Right Garbage Collector to Increase Efficiency of Java Memory UsageChoosing Right Garbage Collector to Increase Efficiency of Java Memory Usage
Choosing Right Garbage Collector to Increase Efficiency of Java Memory UsageJelastic Multi-Cloud PaaS
 
Accelerating Envoy and Istio with Cilium and the Linux Kernel
Accelerating Envoy and Istio with Cilium and the Linux KernelAccelerating Envoy and Istio with Cilium and the Linux Kernel
Accelerating Envoy and Istio with Cilium and the Linux KernelThomas Graf
 
DEEP-mon: Dynamic and Energy Efficient Power monitoring for container-based i...
DEEP-mon: Dynamic and Energy Efficient Power monitoring for container-based i...DEEP-mon: Dynamic and Energy Efficient Power monitoring for container-based i...
DEEP-mon: Dynamic and Energy Efficient Power monitoring for container-based i...NECST Lab @ Politecnico di Milano
 
Verilog codes and testbench codes for basic digital electronic circuits.
Verilog codes and testbench codes for basic digital electronic circuits. Verilog codes and testbench codes for basic digital electronic circuits.
Verilog codes and testbench codes for basic digital electronic circuits. shobhan pujari
 
JVM Mechanics: Understanding the JIT's Tricks
JVM Mechanics: Understanding the JIT's TricksJVM Mechanics: Understanding the JIT's Tricks
JVM Mechanics: Understanding the JIT's TricksDoug Hawkins
 

Was ist angesagt? (20)

EBPF and Linux Networking
EBPF and Linux NetworkingEBPF and Linux Networking
EBPF and Linux Networking
 
Static partitioning virtualization on RISC-V
Static partitioning virtualization on RISC-VStatic partitioning virtualization on RISC-V
Static partitioning virtualization on RISC-V
 
Linux Linux Traffic Control
Linux Linux Traffic ControlLinux Linux Traffic Control
Linux Linux Traffic Control
 
Superscalar & superpipeline processor
Superscalar & superpipeline processorSuperscalar & superpipeline processor
Superscalar & superpipeline processor
 
Modbus
ModbusModbus
Modbus
 
Soc architecture and design
Soc architecture and designSoc architecture and design
Soc architecture and design
 
Peephole optimization
Peephole optimization Peephole optimization
Peephole optimization
 
Can basic
Can basicCan basic
Can basic
 
CMOS TG
CMOS TGCMOS TG
CMOS TG
 
INTERRUPT LATENCY AND RESPONSE OF THE TASK
INTERRUPT LATENCY AND RESPONSE OF THE TASKINTERRUPT LATENCY AND RESPONSE OF THE TASK
INTERRUPT LATENCY AND RESPONSE OF THE TASK
 
Low Power VLSI Designs
Low Power VLSI DesignsLow Power VLSI Designs
Low Power VLSI Designs
 
Amazon Elastic Fabric Adapter: Anatomy, Capabilities, and the Road Ahead
Amazon Elastic Fabric Adapter: Anatomy, Capabilities, and the Road AheadAmazon Elastic Fabric Adapter: Anatomy, Capabilities, and the Road Ahead
Amazon Elastic Fabric Adapter: Anatomy, Capabilities, and the Road Ahead
 
Soluzioni software per la Lean Production
Soluzioni software per la Lean ProductionSoluzioni software per la Lean Production
Soluzioni software per la Lean Production
 
SystemVerilog OOP Ovm Features Summary
SystemVerilog OOP Ovm Features SummarySystemVerilog OOP Ovm Features Summary
SystemVerilog OOP Ovm Features Summary
 
Choosing Right Garbage Collector to Increase Efficiency of Java Memory Usage
Choosing Right Garbage Collector to Increase Efficiency of Java Memory UsageChoosing Right Garbage Collector to Increase Efficiency of Java Memory Usage
Choosing Right Garbage Collector to Increase Efficiency of Java Memory Usage
 
Accelerating Envoy and Istio with Cilium and the Linux Kernel
Accelerating Envoy and Istio with Cilium and the Linux KernelAccelerating Envoy and Istio with Cilium and the Linux Kernel
Accelerating Envoy and Istio with Cilium and the Linux Kernel
 
An introduction to FPGAs and Their MPSOCs
An introduction to FPGAs and Their MPSOCs  An introduction to FPGAs and Their MPSOCs
An introduction to FPGAs and Their MPSOCs
 
DEEP-mon: Dynamic and Energy Efficient Power monitoring for container-based i...
DEEP-mon: Dynamic and Energy Efficient Power monitoring for container-based i...DEEP-mon: Dynamic and Energy Efficient Power monitoring for container-based i...
DEEP-mon: Dynamic and Energy Efficient Power monitoring for container-based i...
 
Verilog codes and testbench codes for basic digital electronic circuits.
Verilog codes and testbench codes for basic digital electronic circuits. Verilog codes and testbench codes for basic digital electronic circuits.
Verilog codes and testbench codes for basic digital electronic circuits.
 
JVM Mechanics: Understanding the JIT's Tricks
JVM Mechanics: Understanding the JIT's TricksJVM Mechanics: Understanding the JIT's Tricks
JVM Mechanics: Understanding the JIT's Tricks
 

Andere mochten auch

Perl on Amazon Elastic MapReduce
Perl on Amazon Elastic MapReducePerl on Amazon Elastic MapReduce
Perl on Amazon Elastic MapReducePedro Figueiredo
 
30 Minutes To CPAN
30 Minutes To CPAN30 Minutes To CPAN
30 Minutes To CPANdaoswald
 
PERL Unit 6 regular expression
PERL Unit 6 regular expressionPERL Unit 6 regular expression
PERL Unit 6 regular expressionBinsent Ribera
 
Logic Progamming in Perl
Logic Progamming in PerlLogic Progamming in Perl
Logic Progamming in PerlCurtis Poe
 

Andere mochten auch (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
 

Ähnlich wie CPAN Training

perlbrew yapcasia 2010
perlbrew yapcasia 2010perlbrew yapcasia 2010
perlbrew yapcasia 2010Kang-min Liu
 
MyCPAN ( LA.pm, September 2007 )
MyCPAN ( LA.pm, September 2007 )MyCPAN ( LA.pm, September 2007 )
MyCPAN ( LA.pm, September 2007 )brian d foy
 
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 Packagertechmemo
 
Perl in RPM-Land
Perl in RPM-LandPerl in RPM-Land
Perl in RPM-LandDave Cross
 
Perlmania_Study - CPAN
Perlmania_Study - CPANPerlmania_Study - CPAN
Perlmania_Study - CPANJeen Lee
 
Modern Perl toolchain (help building microservices)
Modern Perl toolchain (help building microservices)Modern Perl toolchain (help building microservices)
Modern Perl toolchain (help building microservices)Jose Luis Martínez
 
Prepare for PHP Test Fest 2009
Prepare for PHP Test Fest 2009Prepare for PHP Test Fest 2009
Prepare for PHP Test Fest 2009PHPBelgium
 
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 cPanelcPanel
 
Deploying Symfony | symfony.cat
Deploying Symfony | symfony.catDeploying Symfony | symfony.cat
Deploying Symfony | symfony.catPablo Godel
 
Modern Commandline Tool
Modern Commandline ToolModern Commandline Tool
Modern Commandline ToolYuji Shimada
 
Revisiting ppm
Revisiting ppmRevisiting ppm
Revisiting ppmcharsbar
 
21st Century CPAN Testing: CPANci
21st Century CPAN Testing: CPANci21st Century CPAN Testing: CPANci
21st Century CPAN Testing: CPANciMike Friedman
 
Approaching package manager
Approaching package managerApproaching package manager
Approaching package managerTimur Safin
 
How I hack on puppet modules
How I hack on puppet modulesHow I hack on puppet modules
How I hack on puppet modulesKris Buytaert
 

Ähnlich wie 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
 

Kürzlich hochgeladen

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
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 RobisonAnna Loughnan Colquhoun
 
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 2024Rafal Los
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
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 Nanonetsnaman860154
 
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.pdfUK Journal
 
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)wesley chun
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
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.pdfsudhanshuwaghmare1
 
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 SolutionsEnterprise Knowledge
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 

Kürzlich hochgeladen (20)

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
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
 
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
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
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
 
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
 
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)
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
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
 
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
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 

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)