[SP-pm] sobre arquivos .pm

Khaoz giulianisanches at gmail.com
Sun May 16 16:49:34 PDT 2010


Em 15 de maio de 2010 18:08, breno <breno at rio.pm.org> escreveu:
> Oi Lucas,
>
> 2010/5/15 Lucas Moraes <mineiro at 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
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm at pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>

Lucas,

O seu .pm tem que estar no mesmo diretório do seu .pl ou então no
@INC. Atenção a definição package. Deixa eu exemplificar que,
pessoalmente, acho mais fácil.

Suponto seu teste.pl utilizando um modulo chamado MeuModulo.pm

#!/usr/bin/perl

use MeuModulo;

print_my_message();

E no, no mesmo diretório, o arquivo MeuModulo.pm:

package MeuModulo;

sub print_my_message() {
    print "Ola!";
}

Supondo que você resolvesse criar um diretório no nível do teste.pl
para organizar melhor as coisas e movesse o MeuModulo.pm para dentro
dele ficando algo como:

teste.pl
DefinicaoDo/MeuModulo.pm

troque o package no seu MeuModulo.pm para:

package DefinicaoDo::MeuModulo;

(restando do seu código)

E no teste.pl:

use DefinicaoDo::MeuModulo;

(restante do seu código)


Espero ter conseguido passar a idéia, e espero ser corrigido pelos
experientes da lista onde tiver cometido erros..

Te indico a leitura do Beginning Perl em
http://www.perl.org/books/beginning-perl/. Achei ótimo no início.

[]'s

-- 
Giuliani Sanches
twitter.com/giulianisanches
giulianisanches.blogspot.com

Como elaborar uma pergunta:
http://www.istf.com.br/perguntas/


More information about the SaoPaulo-pm mailing list