[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