[SP-pm] sobre arquivos .pm

breno breno at rio.pm.org
Sat May 15 14:08:36 PDT 2010


Oi Lucas,

2010/5/15 Lucas Moraes <mineiro em live.be>:
> Oi gente, estou com dificuldades de encotrar os arquivos .pm, eu coloquei
> eles em todos diretorios e o per naum localiza, de ess erro:
>
> Can't locate teste.pm in @INC (@INC contains:
> /usr/local/lib/perl5/5.8.8/i686-linux /usr/local/lib/perl5/5.8.8
> /usr/local/lib/perl5/site_perl/5.8.8/i686-linux
> /usr/local/lib/perl5/site_perl/5.8.8 /usr/local/lib/perl5/site_perl .) at
> teste.pl line 7.
> BEGIN failed--compilation aborted at teste.pl line 7.
>
> porque esta acontecendo esse erro?
>

Como você está chamando o programa teste.pl? A partir de que
diretório? O erro acontece pq seu arquivo "teste.pm" não está no
diretório de onde você chamou o "teste.pl" (que não necessariamente é
o diretório em que o "teste.pl" está), ou em qualquer dos diretórios
mencionados.


> o require, qual sua diferenca com use? require perdi desempenho?
>

Vai no terminal e digita isso:

          perldoc -q require

ele vai te apontar exatamente para a pergunta no perlfaq: "What’s the
difference between require and use?"

A resposta rápida (e incompleta) é que o "use Módulo" carrega o módulo
"Modulo.pm" pra vc durante a compilação do programa, e chama a função
import (se existir) para importar funções e outros símbolos do módulo
para quem o usou. O "require", por outro lado, carrega o módulo apenas
em tempo de execução e não chama o import().

Em código, dizer:

    use Modulo;

é a mesma coisa que dizer:

   BEGIN { require Modulo; Modulo->import }

Em geral, você quer "use". O "require" costuma ser apenas em caso de
trabalhar com um módulo muito pesado de carregar e que é raramente
utilizado. Nesse caso, carregá-lo apenas quando necessário pode dar ao
usuário uma sensação de maior velocidade ao iniciar o programa. Em
(quase) todos os outros casos, "use" será mais adequado e eficiente.

[]s

-b


More information about the SaoPaulo-pm mailing list