<br><br><div class="gmail_quote">2009/12/21 Sammuel Souza <span dir="ltr">&lt;<a href="mailto:sammuel.souza@gmail.com">sammuel.souza@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div>Olá,</div>
<div> </div>
<div>estou querendo usar o require</div>
<div> </div>
<div>veja o que fiz:</div>
<div> </div>
<div>#!/usr/bin/perl<br><br>use CGI;<br>use CGI::Carp qw(fatalsToBrowser);<br>use DBI;<br>use GD;<br>use Number::Format;<br>use strict;<br>use warnings;<br>use diagnostics;<br> </div>
<div>require &#39;<a href="http://variavel.pl" target="_blank">variavel.pl</a>&#39;;</div>
<div> </div>
<div>my $query = new CGI;<br>my $acao = $query-&gt;param(&#39;acao&#39;) || &#39;&#39;;<br><br>print $query-&gt;header;</div>
<div> </div>
<div>print &quot;ola  $versao&quot;;</div>
<div> </div>
<div>#### Dentro do <a href="http://variavel.pl" target="_blank">variavel.pl</a></div>
<div>$pasta = &quot;/&quot;;<br>$versao = &quot;1.3.4&quot;;</div>
<div>
<p>1;<br><br>### Veja o error:<br>Global symbol &quot;$versao&quot; requires explicit package name at /usr/local.</p>
<p>Eu preciso criar um arquivo que contem as variaveis fixa para usar em outros scripts.</p></div></blockquote></div><br>É aconcelhável usar um módulo de configurações nesse caso, como já foi falado aqui. O Config::General é ótimo para esse caso. Você inclusive pode guardar todas as configurações em sessões separadas, no mesmo aquivo.<br>
<br>Agora, falando do erro específico, o require rodou com sucesso. O erro foi causado porque o script roda em modo estrito (use strict;). Para passar pelo erro, tem algumas alternativas.<br><br>você deveria desabilitar o strict vars antes de chamar o <a href="http://xn--varivel-kwa.pl">variável.pl</a>:<br>
<br>(...)<br>use strict;<br>use warnings;<br>use diagnostics;<br><br>{ # pegar leve com variáveis nesse bloco<br>  no strict &#39;vars&#39;<br><div>  require &#39;<a href="http://variavel.pl/" target="_blank">variavel.pl</a>&#39;;<br>
</div>
<div>} # acabou o bloco, strict volta com força total<br> <br></div>
my $query = new CGI;<br>(...)<br><br><br>Ou você pode declarar o escopo das variáveis antes de usar o require:<br><br>(...)<br>
use strict;<br>
use warnings;<br>
use diagnostics;<br>
<br>my ( $pasta, $versao, ...);<br>require &#39;<a href="http://variavel.pl/" target="_blank">variavel.pl</a>&#39;;<br><div>
  <br>
</div>

<div> <br>
</div>

my $query = new CGI;<br>
(...)<br>
<br><br>Ou então especificar o escopo das variáveis no arquivo &#39;<a href="http://xn--varivel-kwa.pl">variável.pl</a>&#39;:<br><br>(...)<br>my $pasta = &quot;/&quot;;<br>my $versao = &quot;1.3.4&quot;;<br>(...)<br><br>
<br>Deve ter outras formas de fazer isso, mas para o seu problema, é melhor usar o Config::General.<br><br>Para algo mais maleável, acho o formato JSON melhor que o XML para arquivos de configuração:<br><br>Config::JSON<br>
  <a href="http://search.cpan.org/~rizen/Config-JSON-1.5000/lib/Config/JSON.pm">http://search.cpan.org/~rizen/Config-JSON-1.5000/lib/Config/JSON.pm</a><br><br><br>-- <br>Existe mais de uma maneira de chegar lá<br><br>Glauber Machado Rodrigues<br>
<br>skype: glauber.rodrigues<br>