[Cascavel-pm] Declarar variável como local
Wendel Scardua
wendelscardua em gmail.com
Quinta Fevereiro 15 07:11:45 PST 2007
Deixa eu tentar explicar um pouco, do jeito que eu entendo (o cara parece
ter pesquisado a respeito afinal):
"my" declara uma variável, "local" não.
O "local" pega uma variável que *já ecziste* (Quevedo TM), e "salva" o valor
dela, permitindo você usá-la dentro do contexto atual, e ao sair do
contexto, o valor anterior é restaurado.
Isso pode parecer inútil (afinal parece até uma gambiarra, comparado com o
"my"), mas pense no caso de variáveis especiais, como $1, $_, etc, e em
geral variáveis globais, que você *não pode criar* no contexto atual. Nesses
casos, o "local" funciona, salvando o valor delas e restaurando após o final
do contexto.
# Exemplo 1:
my $x = 42; # cria uma variável $x
{
my $x = 23; # cria uma nova variável $x , que só existe aqui dentro
print $x,"\n";
}
print $x, "\n";
# imprime 23 e 42
# Exemplo 2:
my $x = 42; # cria uma variável $x
{
local $x = 23; # salva o 42, e a mesma variável passa a valer 23
print $x,"\n";
} # restaura o 42
print $x, "\n";
# imprime 23 e 42
# Exemplo 3:
$_ = 42;
{
my $_ = 23;
print $_,"\n";
}
print $_, "\n";
# dá erro, você não pode declarar my $_ , por $_ ser uma variável global
# Exemplo 4:
$_ = 42;
{
local $_ = 23; # salva o 42
print $_,"\n";
} # restaura o 42
print $_, "\n";
# imprime 23 e 42
Agora espero que as coisas fiquem mais claras quando você RTFM (como
sugerido pelo Luis)
(e se eu mesmo falei alguma besteira aí em cima, é melhor ficar só com os
perldocs mesmo, hehe)
[]s
Wendel
On 2/15/07, Luis Motta Campos <luismottacampos em yahoo.co.uk> wrote:
>
>
> RTFM, meu caro:
> perldoc -f local
> perldoc -f my
> perldoc -f our
>
> Se você quer declarar variáveis, o mais provável é que precise o my
> ().
>
> Se você postar o seu código problemático, posso ser específico
> sobre o seu problema, e te explicar o que acontece.
>
--
"Não ajustar o auto-ajuste" - http://wendel.scardua.net/
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://mail.pm.org/pipermail/cascavel-pm/attachments/20070215/a0bef366/attachment-0003.html
Mais detalhes sobre a lista de discussão Cascavel-pm