veja bem<div><br></div><div>undef é um estado e não um valor.</div><div><br></div><div>uma variavel não inicializada tem o seu valor indefinido.</div><div><br></div><div>entretanto existem algumas convenções:</div><div><br>

</div><div><div><div>$ 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)'</div>

<div>$VAR1 = undef;</div><div>x=></div><div>string x=> ()</div><div>+0 =>0</div><div>x is false</div></div><div><br></div><div>convenção:</div><div><br></div><div>undef, ao tentar stringificar, vira string vazia.</div>

<div>undef, no contexto numerico, vira zero</div><div>undef, no contexto booleando, é falso</div><div><br></div><div>perceba que vc pode tornar uma variavel indefinida novamente fazendo</div><div><br></div><div>undef $variavel;</div>

<div><br></div><div>POIS undef é um operador unario, como - no caso de -1 e SEMPRE retorna valor undefined. </div><div><br></div><div>por isso vc pode fazer </div><div><br></div><div>$variavel = undef;</div><div><br></div>

<div>e outras operações.</div><br><div class="gmail_quote">2013/1/8 Aureliano Guedes <span dir="ltr"><<a href="mailto:guedes_1000@hotmail.com" target="_blank">guedes_1000@hotmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">




<div><div dir="ltr">
Ola monges,<br><br>Quanto tempo, ne?! A paz reinava aqui sem minha ignorância. hahaha<br><br>Desejando de cara um ótimo ano a todos venho trazer mais uma simples dúvida.<br><br>Eu tenho o seguinte:<br><br>chomp (my $b = <>);<br>

$b = undef if $b eq '';<br>my $c = 'c';<br>my $a = defined($b) ? $b : $c;<br>print $a, "\n";<br><br><br>Funciona perfeitamente, mas o que não entendo é porque se eu remover a segunda linha ($b = undef if $b eq '';). <br>

Ja não funciona.<br><br>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.<br><br>Se eu fizer apenas:<br>chomp (my $b = <>);<br>my $c = 'c';<br>

my $a = defined($b) ? $b : $c;<br>print $a, "\n";<br><br>Não da certo.<br><br><br>Sim, eu sei que as formas abaixo funcionam, mas é apenas uma questão de estudo mesmo.<br><br>chomp (my $b = <>);<br>my $c = 'c';<br>

my $a = $b ? $b : $c;<br>print $a, "\n";<br><br><br>chomp (my $b = <>);<br>my $c = 'c';<br>my $a = $b || $c;<br>print $a, "\n";<br><br>daria certo, mas minha intenção é estudo apenas<br>
                                          </div>
</div>
<br>_______________________________________________<br>
Rio-pm mailing list<br>
<a href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br></blockquote></div><br><br clear="all"><div><br></div>-- <br>Tiago B. Peczenyj<br>Linux User #405772<br>

<br><a href="http://about.me/peczenyj" target="_blank">http://about.me/peczenyj</a>
</div>