[Rio-pm] fazer string ficar undef

jimmy jimmy.tty em gmail.com
Terça Janeiro 8 08:30:11 PST 2013


Saudações Aureliano,

On Tue, Jan 08, 2013 at 03:43:10PM +0000, Aureliano Guedes wrote:
[...]
> 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.
Assim como o Renato Santos já mencionou, uma string vazia é "defined",
logo, se fizermos:

    my $c = 'c'; 
    my $b = ''; 
    my $a = defined $b ? $b : $c; 
    print '<'.$a.'>';

o resultado será "<>"

Para o problema que você mencionou, o que parece querer testar de fato é
se há algum valor na string diferente de "undef" e de vazio:

    my $c = 'c'; 
    my $b = ''; 
    my $a = defined $b && $b ne '' ? $b : $c;
    print '<'.$a.'>';

em outras palavras, qualquer coisa diferente de undef e vazio seriam
atribuídos a "$a".

-- 
"Não manejo bem as palavras
Mas manipulo bem as strings."
------------------------------
http://tecnoveneno.blogspot.com


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