[Rio-pm] fazer string ficar undef
Tiago Peczenyj
tiago.peczenyj em gmail.com
Terça Janeiro 8 08:21:16 PST 2013
veja bem
undef é um estado e não um valor.
uma variavel não inicializada tem o seu valor indefinido.
entretanto existem algumas convenções:
$ perl -MData::Dumper -e 'my $x; print Dumper($x),"x=>",$x,"\nstring x=>
($x)","\n+0 =>",$x+0,"\n"; print "x is false" unless ($x)'
$VAR1 = undef;
x=>
string x=> ()
+0 =>0
x is false
convenção:
undef, ao tentar stringificar, vira string vazia.
undef, no contexto numerico, vira zero
undef, no contexto booleando, é falso
perceba que vc pode tornar uma variavel indefinida novamente fazendo
undef $variavel;
POIS undef é um operador unario, como - no caso de -1 e SEMPRE retorna
valor undefined.
por isso vc pode fazer
$variavel = undef;
e outras operações.
2013/1/8 Aureliano Guedes <guedes_1000 em hotmail.com>
> Ola monges,
>
> Quanto tempo, ne?! A paz reinava aqui sem minha ignorância. hahaha
>
> Desejando de cara um ótimo ano a todos venho trazer mais uma simples
> dúvida.
>
> Eu tenho o seguinte:
>
> chomp (my $b = <>);
> $b = undef if $b eq '';
> my $c = 'c';
> my $a = defined($b) ? $b : $c;
> print $a, "\n";
>
>
> Funciona perfeitamente, mas o que não entendo é porque se eu remover a
> segunda linha ($b = undef if $b eq '';).
> Ja não funciona.
>
> Se eu inserir algum valor em $b $a devera assumir o valor de $b, mas se
> não inserir devera assumir o valor de $c.
>
> Se eu fizer apenas:
> chomp (my $b = <>);
> my $c = 'c';
> my $a = defined($b) ? $b : $c;
> print $a, "\n";
>
> Não da certo.
>
>
> Sim, eu sei que as formas abaixo funcionam, mas é apenas uma questão de
> estudo mesmo.
>
> chomp (my $b = <>);
> my $c = 'c';
> my $a = $b ? $b : $c;
> print $a, "\n";
>
>
> chomp (my $b = <>);
> my $c = 'c';
> my $a = $b || $c;
> print $a, "\n";
>
> daria certo, mas minha intenção é estudo apenas
>
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>
--
Tiago B. Peczenyj
Linux User #405772
http://about.me/peczenyj
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20130108/68c0a71c/attachment-0001.html>
Mais detalhes sobre a lista de discussão Rio-pm