[Cascavel-pm] Duvidas com require;

Glauber Machado Rodrigues (Ananda) glauber.rodrigues em gmail.com
Terça Dezembro 22 04:05:32 PST 2009


2009/12/21 Sammuel Souza <sammuel.souza em gmail.com>

> Olá,
>
> estou querendo usar o require
>
> veja o que fiz:
>
> #!/usr/bin/perl
>
> use CGI;
> use CGI::Carp qw(fatalsToBrowser);
> use DBI;
> use GD;
> use Number::Format;
> use strict;
> use warnings;
> use diagnostics;
>
> require 'variavel.pl';
>
> my $query = new CGI;
> my $acao = $query->param('acao') || '';
>
> print $query->header;
>
> print "ola  $versao";
>
> #### Dentro do variavel.pl
> $pasta = "/";
> $versao = "1.3.4";
>
> 1;
>
> ### Veja o error:
> Global symbol "$versao" requires explicit package name at /usr/local.
>
> Eu preciso criar um arquivo que contem as variaveis fixa para usar em
> outros scripts.
>

É 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.

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.

você deveria desabilitar o strict vars antes de chamar o
variável.pl<http://xn--varivel-kwa.pl>
:

(...)
use strict;
use warnings;
use diagnostics;

{ # pegar leve com variáveis nesse bloco
  no strict 'vars'
  require 'variavel.pl';
} # acabou o bloco, strict volta com força total

my $query = new CGI;
(...)


Ou você pode declarar o escopo das variáveis antes de usar o require:

(...)
use strict;
use warnings;
use diagnostics;

my ( $pasta, $versao, ...);
require 'variavel.pl';


 my $query = new CGI;
(...)


Ou então especificar o escopo das variáveis no arquivo
'variável.pl<http://xn--varivel-kwa.pl>
':

(...)
my $pasta = "/";
my $versao = "1.3.4";
(...)


Deve ter outras formas de fazer isso, mas para o seu problema, é melhor usar
o Config::General.

Para algo mais maleável, acho o formato JSON melhor que o XML para arquivos
de configuração:

Config::JSON
  http://search.cpan.org/~rizen/Config-JSON-1.5000/lib/Config/JSON.pm


-- 
Existe mais de uma maneira de chegar lá

Glauber Machado Rodrigues

skype: glauber.rodrigues
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/cascavel-pm/attachments/20091222/82d1f207/attachment.html>


Mais detalhes sobre a lista de discussão Cascavel-pm