[SP-pm] Desculpa a lista

Wendel Scardua wendelscardua em gmail.com
Quarta Junho 11 04:39:28 PDT 2008


Nada disso...

O my faz a variável existir naquele contexto. Se você não "use
strict", você pode sair usando variáveis que elas surgem
automagicamente pra você. Pra coisas rápidas, de uma linha só, até que
isso dá conta, mas para programas maiores é inviável - você vai errar
nome de variável sem saber, vai usar duas variáveis com o mesmo nome
em contextos diferentes, mas serão a mesma, etc...

Com "use strict", toda variável que você for usar deve ser declarada.
Assim se você errar o nome da variável, o erro vai te dizer onde foi.
Sem falar que a existência da variável fica restrita ao contexto onde
ela foi declarada.

<codigo>
#!/usr/bin/perl
use strict;
use warnings;

my $max = 0;
for my $i (4, 8, 15, 16, 23, 42) {
    my $quadrado;
    $quadrado = $i * $i;

    if ($quadrado > $max) {  $max = $quadrado }
}
print $max, $/;
</codigo>

Nesse exemplo, a variável $quadrado (assim como a variável do for, $i
), só existe dentro do contexto do "for". Se você tentar escrever
print $quadrado; fora do "for", vai tomar um erro na cara.

Além disso, isso aqui passa a ser possível:

<codigo>
#!/usr/bin/perl
use strict;
use warnings;
my $numero;
$numero = 8;
{
    my $numero;
    $numero = 80;
    print $numero, $/;
}
print $numero, $/;
</codigo>

Esse código imprime primeiro 80, e depois 8. Dentro do bloco (que pode
ser um loop, um if, ou nesse caso só um bloco mesmo), é criada uma
nova variável, que por coincidência tem o mesmo nome daquela que foi
criada antes. Mas, o que vale é a que está no contexto mais específico
(o bloco). Saindo do bloco, a variável deixa de existir, e $numero se
refere a que criamos anteriormente.

Agora deve ter dado pra entender melhor o my...

[]s
Wendel

2008/6/10 Daniel de Oliveira Mantovani <daniel.oliveira.mantovani em hotmail.com>:
>
> Intendi agora o "my", ele só faz a variável valer aquele valor quanto está
> sendo executada.
>


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