Só pra não ficar de fora ...<br><br>Me corrijam se eu estiver errado, mas a diferenca entre use e require é o fato da primeira forçar a verificação no tempo de compilação, ou ... carga do script.<br><br>Se preparar um sistema realmente grande, vc deverá tomar varios cuidados para não acabar com alto desastroso em mãos, dentre eles, um fracionamento coerente de módulos e forma de chamada.
<br><br>Se vc tiver um sistema extenso, e utilizar a chamada padrão, com use, todo o codigo será validado. Claro... vc provavelmente nem vai perceber, pois digamos que um sistema muito extenso vai ter o que, 50 ou 100 mil linhas ? Mas se for um projeto web, ao entrar em produção, com carga elevada, isso pesa.
<br><br>Mas... em web para um projeto grande, não será utilizado CGI, será mod_perl, ou fastcgi.<br><br>Bem... voltando ao ponto use vs require.<br><br>O use equivale a "BEGIN { require modulo; import modulo }", e não pode ser utilizado de forma condicional:
<br><br>#x<br>if ( $modo == 1 ) {<br> use Modulo1;<br> } else {<br> use ModuloX;<br>}<br><br>Enquanto que o require permite esta opção.<br><br>#x<br>
if ( $modo == 1 ) {<br>
require Modulo1;<br>
} else {<br>
require ModuloX;<br>
}<br>
<br># <a href="http://Modulo1.pm">Modulo1.pm</a><br>package Modulo1;<br>print "Begin Modulo1\n";<br>1;<br><br>
# ModuloX.pm<br>
package Modulo1;<br>
print "Begin ModuloX\n";<br>X;<br><br><br>Crie os arquivos e faça o teste ;)<br><br><a href="http://perldoc.perl.org/functions/require.html">http://perldoc.perl.org/functions/require.html</a><br><a href="http://perldoc.perl.org/functions/use.html">
http://perldoc.perl.org/functions/use.html</a><br><br>PS: Conhecimento estraído de leitura de discussões na Cascavel-PM. Como diria meu chefe... soluções em busca de problemas ;)<br>
<br><br>Sds,<br>Marco Antonio<br><br><div><span class="gmail_quote">Em 18/11/07, <b class="gmail_sendername">Blabos de Blebe</b> <<a href="mailto:blabos@gmail.com">blabos@gmail.com</a>> escreveu:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Era isso que eu queria saber fernando.<br><br>vlw<br><br>Obriagado a todos que responderam<br><br><br><br><br><br>On Nov 18, 2007 5:49 PM, Fernando Oliveira <<a href="mailto:fernandocorrea@gmail.com">fernandocorrea@gmail.com
</a>> wrote:<br>><br>><br>> Isso depende...<br>><br>> se nos seus módulos vc chama outros módulos através de "use", ele vai ser<br>> carregado logo no inicio do carregamento do programa, como se estivesse
<br>> dentro do bloco BEGIN... agora, se vc usar um "require" os modulos serão<br>> carregados sob demanda...<br>><br>> Fiz um pequeno teste cara comprovar isso:<br>><br>> fernando@ubuntu:~$ for i in
<a href="http://teste.pm">teste.pm</a> <a href="http://teste2.pm">teste2.pm</a> <a href="http://teste3.pm">teste3.pm</a> <a href="http://teste4.pm">teste4.pm</a>; do echo<br>> "#$i"; cat $i; echo; done<br>> #teste.pm
<br>> package teste;<br>> print "teste$/";<br>> use teste2;<br>><br>> #teste2.pm<br>> package teste2;<br>> print "teste2$/";<br>> use teste3;<br>><br>> #teste3.pm<br>> package teste3;
<br>> print "teste3$/";<br>> use teste4;<br>><br>> #teste4.pm<br>> package teste4;<br>> print "teste4$/";<br>><br>> fernando@ubuntu:~$ perl -Mteste -e ''<br>> teste4<br>
> teste3<br>> teste2<br>> teste<br>> fernando@ubuntu:~$ perl -i -pe 's/use/require/g;'<br>> teste*.pmfernando@ubuntu:~$ for i in <a href="http://teste.pm">teste.pm</a> <a href="http://teste2.pm">teste2.pm
</a> <a href="http://teste3.pm">teste3.pm</a> <a href="http://teste4.pm">teste4.pm</a>;<br>> do echo "#$i"; cat $i; echo; done<br>> #teste.pm<br>> package teste;<br>> print "teste$/";<br>> require teste2;
<br>><br>> #teste2.pm<br>> package teste2;<br>> print "teste2$/";<br>> require teste3;<br>><br>> #teste3.pm<br>> package teste3;<br>> print "teste3$/";<br>> require teste4;
<br>><br>> #teste4.pm<br>> package teste4;<br>> print "teste4$/";<br>><br>> fernando@ubuntu:~$ perl -Mteste -e ''<br>> teste<br>> teste2<br>> teste3<br>> teste4<br>> fernando@ubuntu
:~$<br>><br>> isso prova q qdo se usa o "use", ele carrega o módulo mesmo antes do<br>> print... por isso a ordem é "invertida" agora, qdo uso o require, ele faz<br>> "na" ordem, primeiro o print e depois o carregamento do modulo...
<br>><br>> espero q tenha podido sanar algumas dúvidas...<br>><br>> Em 18/11/07, Blabos de Blebe < <a href="mailto:blabos@gmail.com">blabos@gmail.com</a>> escreveu:<br>> > Na mosca, Fernando.<br>> > Era exatamente nisso que eu queria chegar. Perdoem-me pela falta de
<br>> clareza.<br>> ><br>> > Num projeto gigante, mas bem feito em perl, separado em módulos, etc<br>> > cada módulo seria compilado de acordo com a demanda, mesmo depois de subir<br>> > o script principal, ou seria compilado tudo de uma vez, pra depois
<br>> > subir o sistema?<br>> ><br>> ><br>> > Obrigado<br>> ><br>> ><br>> > On Nov 17, 2007 11:29 AM, Fernando Oliveira <<a href="mailto:fernandocorrea@gmail.com">fernandocorrea@gmail.com
</a> ><br>> wrote:<br>> > > Eu acho q a pergunta dele foi a seguinte:<br>> > ><br>> > > se existem programas q levam dias p/ compilar, um equivalente a um<br>> desses<br>> > > programas em uma linguagem q compila o código em tempo real, levaria
<br>> dias p/<br>> > > rodar? e teria q se esperar dias toda vez q se quisesse rodar esse<br>> programa?<br>> > ><br>> > > foi isso q vc quis perguntar locão (wesley)?<br>> > ><br>
> > > Em 17/11/07, Frederico Recsky < <a href="mailto:frederico@gmail.com">frederico@gmail.com</a>> escreveu:<br>> > ><br>> > > > Olá<br>> > > ><br>> > > > On Nov 15, 2007 3:32 PM, Blabos de Blebe <
<a href="mailto:blabos@gmail.com">blabos@gmail.com</a>> wrote:<br>> > > > > Boa tarde a todos,<br>> > > > ><br>> > > > > Ultimamente andam me rodeando assuntos como interoperabilidade,
<br>> > > > > máquina virtual, compilação, etc.<br>> > > > ><br>> > > > > Cenário:<br>> > > > ><br>> > > > > Tem uma pessoal aí que diz que pra ser portável tem que ter máquina
<br>> > > > > virtual, "porque vc compila pra um e<br>> > > > > roda em todos". Outros dizem que para ser portável, basta ser<br>> > > > > compilável em qualquer plataforma. Os
<br>> > > > > adeptos das máquinas virtuais respondem que grandes sistemas demoram<br>> > > > > muito pra compilar, gerando<br>> > > > > custos extras, etc.<br>> > > >
<br>> > > > "Maquina virtual, compila em um e roda em todas" é um puta engano. No<br>> > > > caso do java você roda em todos que a sun quer com ressalvas em<br>> > > > algumas. Alias, não existe almoço gratis.
<br>> > > ><br>> > > > > A pergunta é: Dado um sistema que demore dias pra compilar numa<br>> > > > > linguagem qualquer. Dado que<br>> > > > > esse sistema tenha sido re-escrito em "Elegante Perl". Como Perl se
<br>> > > > > comporta ao levantar um<br>> > > > > sistema gigante? Ou seja, quais as dificuldades que Perl poderia<br>> > > > > enfrentar nesse cenário ou em<br>> > > > > algum semelhante?
<br>> > > ><br>> > > > Demorar dias para compilar não quer dizer nada. Quando voce muda<br>> > > > somente um pedaço do codigo fonte, voce não compila tudo novamente,<br>> > > > pois já inventaram o linker e etc.. Normalmente na entrega final se
<br>> > > > faz um grande build. Porém existem n formas de se distribuir grandes<br>> > > > programas compilados e suas atualizações sem recompilar tudo. Patches<br>> > > > de binarios por exemplo.
<br>> > > ><br>> > > > Olha, dos sistemas de dias para compilar, eu vi servidores e sistemas<br>> > > > operacionais e suites office/graficas. O corel draw deve levar dias<br>> > > > para compilar por exemplo. Porém normalmente você trabalha com pedaços
<br>> > > > de um sistema. Você não vai fazer um oracle nem compilar seu proprio<br>> > > > oracle para entregar para o cliente, você faz um aplicativo<br>> > > > (relativamente pequeno) que usa o oracle existente e entrega tudo.
<br>> > > ><br>> > > > ><br>> > > > > Eu tenho lá minhas especulações sobre o que aconteceria, mas já que<br>> > > > > não tenho como testar,<br>> > > > > gostaria das opiniões dos grandes mestres.
<br>> > > ><br>> > > > Just for fun eu gerei um script perl de somente 20 megas, e ele ta<br>> > > > "abrindo" no meu micro faz uns 40 minutos:<br>> > > ><br>> > > > ps aux |grep
gigante.pl<br>> > > > ibm 8840 92.2 7.2 153616 150460 pts/1 R+ 22:21 42:58 perl<br>> > > gigante.pl<br>> > > ><br>> > > > Obviamente um script monolitico de 20mb não é "Elegante Perl" :) ;)
<br>> > > ><br>> > > > --<br>> > > > ____________________________<br>> > > > Frederico Recsky<br>> > > > Linux User: #253572<br>> > > > <a href="http://www.fred.eti.br">
http://www.fred.eti.br</a><br>> > > > <a href="http://www.perl.org.br">http://www.perl.org.br</a><br>> > > > _______________________________________________<br>> > > > SaoPaulo-pm mailing list
<br>> > > > <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>> > > > <a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a><br>> > > >
<br>> > ><br>> > ><br>> > ><br>> > > --<br>> > > []'s Fernando<br>> > > _______________________________________________<br>> > > Rio-pm mailing list<br>> > >
<a href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>> > > <a href="http://mail.pm.org/mailman/listinfo/rio-pm">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>> > ><br>> > _______________________________________________
<br>> > SaoPaulo-pm mailing list<br>> > <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>> > <a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm">http://mail.pm.org/mailman/listinfo/saopaulo-pm
</a><br>> ><br>><br>><br>><br>> --<br>> []'s Fernando<br>><br>> --<br>> []'s Fernando<br>> _______________________________________________<br>> Rio-pm mailing list<br>> <a href="mailto:Rio-pm@pm.org">
Rio-pm@pm.org</a><br>> <a href="http://mail.pm.org/mailman/listinfo/rio-pm">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>><br>_______________________________________________<br>Rio-pm mailing list<br><a href="mailto:Rio-pm@pm.org">
Rio-pm@pm.org</a><br><a href="http://mail.pm.org/mailman/listinfo/rio-pm">http://mail.pm.org/mailman/listinfo/rio-pm</a><br></blockquote></div><br>