[Cascavel-pm] Várias Variações de Variáveis...
Eden Cardim
edencardim em gmail.com
Quarta Junho 20 13:12:40 PDT 2007
On 6/20/07, Alceu Rodrigues de Freitas Junior <glasswalk3r em hotmail.com> wrote:
> Seu exemplo é bem simples, talvez não seja o melhor para mostrar o que você
> precisa. Eu pensei, para esse caso, que você simplesmente poderia usar uma
> variável global.
Não é tão simples quanto parece, você chegou a executar?
A ordem de execução do exemplo do flávio vai ser a seguinte:
# compilação começa
my $a; # declarações de variável ocorrem em tempo de compilação
$a = $a + 1; # bloco BEGIN é executado em tempo de compilação
# execução começa
$a = 1;
resultado: $a vai conter o valor '1';
Acho que esse exemplo deixa mais claro o problema:
my $var = 1;
BEGIN {
my $var = $var + 2
print '$var do BEGIN: ' . $var;
}
print '$var: ' . $var;
no final das contas a $var de dentro do BEGIN vai conter 2, e a de
fora vai conter 1. Se usar uma variável global, elas vão pisotear umas
nas outras e produzir resultados errados. E isso que pode ter vários
outros blocos aninhados indefinidamente dentro do BEGIN, todos com
suas $vars individuais.
Tá certo que não são muitos casos de programas que vão precisar fazer
isso, mesmo assim, tem que funcionar.
--
Eden Cardim
Instituto Baiano de Biotecnologia
Núcleo de Biologia Computacional e Gestão de Informações Biotecnológicas
Laboratório de Bioinformática
Mais detalhes sobre a lista de discussão Cascavel-pm