[SP-pm] Pergunta sobre a variável $_

Thiago Glauco Sanchez thiagoglauco at ticursos.net
Mon Jul 12 18:19:09 PDT 2010


Sim, e morrem quando usada com my. Sem my o Perl utiliza $_ como global, 
então o valor "sobrevive fora do bloco".
No exemplo $_ = 10 é global
e em for my $_ (0..9) a variável $_ é local. E o Perl 5.12 consegue usar 
$_ local e global.

Em 12/07/2010 22:06, "Flávio R. Lopes" escreveu:
> Grande Thiago (my Jedi Master!)....acho que estou tentando ser 
> "preguiçoso" demais!! :p
> Acho que acabei de enxergar um erro que cometi!!, colocando esta 
> variável global onde se esperava um array...
>
> E uma das coisas que me gerou dúvida, foi exatamente o que você 
> comentou: "Se a variável $_ esta dentro de um bloco, o(s) valor(es) a 
> ela atribuidos deveriam "morrer" dentro do bloco"
>
> Valeu pelo help!
>
> Abraço!
>
>
> Em 12-07-2010 21:25, Thiago Glauco Sanchez escreveu:
>> Flávio, meu impaciente padawan, não seria:
>>
>> for (@meu_array){
>>     código do bloco...
>>     ...onde $_ recebe individualmente cada elemento do array
>> }
>>
>> e no perl 5.12 você pode definir $_ localmente com my.
>>
>> C:\Users\thiago\Desktop>perl -E "$_ = 10; for my $_ (0..9){say $_} 
>> say $_;"
>> 0 #no meu bloco for, a $_ local recebe valores de 0..9 e não 
>> influencia a $_ global
>> 1
>> 2
>> 3
>> 4
>> 5
>> 6
>> 7
>> 8
>> 9
>> 10 #repare que 10 é o valor fora do bloco!!!
>>
>>
>> Em 12/07/2010 21:10, Giuliani Sanches escreveu:
>>> Essa é a famosa global "default variable".
>>>
>>> Você não vai conseguir fazer um foreach nessa variável pois ela é um 
>>> scalar.
>>>
>>> Ela é usada automaticamente pelo perl em diversas funções, loops,
>>> testes de arquivos ...
>>>
>>> Da uma lida aqui http://perldoc.perl.org/perlvar.html e você vai
>>> entende-la melhor.
>>>
>>> []'s
>>>
>>> Em 12 de julho de 2010 20:49, "Flávio R. Lopes"
>>> <flavio.lopes em links.inf.br>  escreveu:
>>>> Olá pessoal!
>>>>
>>>> Como funciona (na memória) os dados que ficam armazenados na 
>>>> variável $_  ?
>>>> Ou seja, supondo que dentro de um programa meu, eu a utilize em 
>>>> dois "blocos
>>>> foreach":
>>>>
>>>> ... código ...
>>>> foreach ($_) {
>>>> ...código_do_bloco-1....
>>>>
>>>> }
>>>>
>>>> # e depois novamente em outro bloco:
>>>>
>>>> foreach ($_) {
>>>> ...código_do_bloco-2....
>>>>
>>>>   }
>>>>
>>>> Quero dizer o seguinte, o último valor que ficou armazenado nela 
>>>> ($_), ao
>>>> final do primeiro bloco, será o "primeiro" valor a ser considerado 
>>>> quando o
>>>> programa for rodar o bloco-2 ?
>>>> É preciso "limpar" esta variável antes de usá-la em outro trecho do 
>>>> código?
>>>>
>>>> Não sei se fui claro...
>>>>
>>>> Abraço,
>>>> Flávio
>>>>
>>>>
>>>> _______________________________________________
>>>> SaoPaulo-pm mailing list
>>>> SaoPaulo-pm em pm.org
>>>> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>>>>
>>>
>>>
>>
>>
>
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm em pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm


-- 
What is the sound of Perl? Is it not the sound of a wall that people have
stopped banging their heads against?
—Larry Wall

Thiago Glauco Sanchez
Intrutor Perl e Redes
www.ticursos.net



More information about the SaoPaulo-pm mailing list