<br><br><div><span class="gmail_quote">Em 19/11/07, <b class="gmail_sendername">Marco A P D'Andrade</b> <<a href="mailto:mdacwb@gmail.com">mdacwb@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;">
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.</blockquote><div><br>Exatamente! isso e o fato do use já importar funções exportadas...
<br> </div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">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.
</blockquote><div><br>O require tb valida o código, mas no momento em q vc o está usando, ou seja, vc pode "distribuir a carga" do sistema...<br> </div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Mas... em web para um projeto grande, não será utilizado CGI, será mod_perl, ou fastcgi.</blockquote><div><br>CGI?! quem se importa com CGI?! :) <br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
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:
</blockquote><div><br>Justamente MDA... o bloco BEGIN sempre é a 1ª coisa a ser executada, não importa onde esteja... mesmo q seja dentro de um if...<br>por exemplo:<br><br>perl -e 'if(0){BEGIN{print "teste$/"}}'
<br><br>por isso q é limitado o uso do use... se fosse permitido fazer "use Modulo if $qq_coisa;" isso não faria o q se quis dizer... (menos ainda o q se disse!) pois equivaleria a "if($qq_coisa){BEGIN{require Modulo; import modulo}}" q pouco se importaria com a condição e da mesma forma "loadaria" no inicio...
<br> </div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">#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" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">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;</blockquote><div><br>Justo... <br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Crie os arquivos e faça o teste ;)
<br><br><a href="http://perldoc.perl.org/functions/require.html" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://perldoc.perl.org/functions/require.html</a><br><a href="http://perldoc.perl.org/functions/use.html" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
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<div><span class="e" id="q_11655deb5f2d4529_1"><br></span></div></blockquote></div><br>No meu trabalho (q é um sistema enorme!) agente usa tanto o "use" qto o "require"... é tão bom ter a liberdade de poder escolher como eu quero fazer as coisas...
<br clear="all"><br>-- <br>[]'s Fernando