Perl Brasil

Pesquisar

Documentação

Artigos

Planeta

Eventos


FISL 10 - Software Livre, a tecnologia que liberta

Comunidade

r1 - 03 Dec 2009 - DanielMantovani

Usando o CPAN

O Comprehensive Perl Archive Network (CPAN), é uma grande coleção de software Perl e documentação,o CPAN nada mais é do que mais um módulo Perl. Você só precisa procurar o que você quer: http://search.cpan.org Tem mais de 15 mil módulos lá, quase tudo o que você precisa está lá, você não precisa ficar perdendo seu tempo, o que é mais incrível é que a cultura Perl é fortíssima em testes, isso garante que os módulos funcionem em qualquer lugar, e caso não funcionem você vai saber o que está errado.

Imagina que você precisa escrever um software que precisa fazer um "get" simples em um website, ao invés de escrever um monte de código, você usa um módulo Perl:

#!/usr/bin/perl

use strict;
use warnings;
use LWP::Simple; 

my $html = get('http://www.perl.org.br');

print $html;
Fácil e simples, mas como instalar o tal módulo ? Qualquer unix-like já vem com o CPAN instalado(bom, é isso que eu acredito), sendo assim é só digitar:
$cpan
Pronto agora você está na shell do CPAN, digite "h" para ajuda:
cpan[1]> h

Display Information                                                (ver 1.9402)
 command  argument          description
 a,b,d,m  WORD or /REGEXP/  about authors, bundles, distributions, modules
 i        WORD or /REGEXP/  about any of the above
 ls       AUTHOR or GLOB    about files in the author's directory
    (with WORD being a module, bundle or author name or a distribution
    name of the form AUTHOR/DISTRIBUTION)

Download, Test, Make, Install...
 get      download                     clean    make clean
 make     make (implies get)           look     open subshell in dist directory
 test     make test (implies make)     readme   display these README files
 install  make install (implies test)  perldoc  display POD documentation

Upgrade
 r        WORDs or /REGEXP/ or NONE    report updates for some/matching/all modules
 upgrade  WORDs or /REGEXP/ or NONE    upgrade some/matching/all modules

Pragmas
 force  CMD    try hard to do command  fforce CMD    try harder
 notest CMD    skip testing

Other
 h,?           display this menu       ! perl-code   eval a perl command
 o conf [opt]  set and query options   q             quit the cpan shell
 reload cpan   load CPAN.pm again      reload index  load newer indices
 autobundle    Snapshot                recent        latest CPAN uploads
Como a ajuda diz para instalar um módulo é só usar o "install", vamos instalar o LWP::Simple

cpan[2]> install LWP::Simple

Pronto, a mágica está feita.

Atualizando o CPAN

A primeira coisa que você deve fazer antes de instalar qualquer coisa é atualizar o CPAN:
$perl -MCPAN -e 'install CPAN'

Adicionando facilidades

Uma coisa que deixa o CPAN muito mais "legal" é instalar o Bundle::CPAN: Quando você instala esse módulo, você pode usar coisas interessantes na shell do CPAN, por exemplo você pode apertar a sete para cima e ver os últimos comandos que você digitou, você ganha alguns recursos na shell do CPAN.
$perl -MCPAN -e 'install Bundle::CPAN'

Usando um host mais rápido

O CPAN por padrão vem com o host: http://cpan.org. O download no cpan.org não é muito rápido, as vezes demora e nem sempre a velocidade é a esperada. A Yahoo tem um mirror do CPAN, o mirror da Yahoo é muito rápido, é interessante usa-lo como o padrão:
$cpan
cpan[1]> o conf urllist http://cpan.yahoo.com
cpan[2]> o conf commit

Pronto, agora o seu mirror é o da Yahoo, você pode ver a lista completa aqui: http://search.cpan.org/mirror

Seguindo os pré-requisitos

Outra coisa muito chata é toda vez que você precisa de um pré-requisito o CPAN pergunta se você quer instalar ou não, o Catalyst por exemplo tem muitas dependências ficar apertando o enter toda hora enche o saco. Para acabar com isso é só configurar uma variável chamada: "prerequisites_policy". Vamos ver as opções que esta variável oferece:
cpan[1]> o conf init prerequisites_policy 
The CPAN module can detect when a module which you are trying to build
depends on prerequisites. If this happens, it can build the
prerequisites for you automatically ('follow'), ask you for
confirmation ('ask'), or just ignore them ('ignore'). Please set your
policy to one of the three values.

 
Policy on building prerequisites (follow, ask or ignore)? [ask]

Escolha a opção follow:

Policy on building prerequisites (follow, ask or ignore)? [ask] follow

Pronto agora é só fazer o commit para ficar permanente:

cpan[2]> o conf commit

Agora quando você for instalar um módulo, não precisa mais ficar apertando o enter, é só mandar instalar e ir tomar um café.

Artimanha

Uma outra coias interessante, se você não lembrar o nome da variável, você pode usar regexp, é isso mesmo regexp:
cpan[1]> o conf /po/

$CPAN::Config options from '/etc/perl/CPAN/Config.pm':

    build_requires_install_policy [follow/yes]
    prerequisites_policy [follow]
    test_report        [0]
    trust_test_report_history [0]

Seja inteligente e leia o manual do CPAN: http://search.cpan.org/~andk/CPAN-1.9402/lib/CPAN.pm

Autor

Daniel de oliveira Mantovani daniel.oliveira.mantovani@gmail.com @mantovanidaniel