Daniel de Oliveira MantovaniPublicado em 03/12/2009
r1 - 03 Dec 2009 - DanielMantovani
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.
A primeira coisa que você deve fazer antes de instalar qualquer coisa é atualizar o CPAN:
$perl -MCPAN -e 'install CPAN'
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'
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
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é.
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
Daniel de Oliveira Mantovani <daniel.oliveira.mantovani@gmail.com> @mantovanidaniel