[Cascavel-pm] Res: Array - espaço em branco

Luis Motta Campos luismottacampos em yahoo.co.uk
Quarta Fevereiro 20 10:08:00 PST 2008


Patty Silva wrote:
> Nao sei se eh a mlehor solucao: my @a = grep {!($_ eq "")} @array;

É uma boa solução, Patty. Mas o problema é de engenharia: onde você está 
colocando estes espaços? Ao invés de ler, gravar no array, "carregar" 
com você para cima e para baixo, não dá para simplesmente "evitar de 
ler" quando você está construindo este array?

De qualquer forma, a tua solução pode melhorar um pouquinho: lembre-se 
de que existem apenas uns poucos valores que resolvem como "falso" em 
Perl: undef, 0, "" e (). Por acaso, os valores que você está querendo 
remover são "falsos". Isso permite que a gente "corrompa" um pouco o uso 
do grep(), pedindo para ele retornar apenas os valores "verdadeiros":

my @dados_limpos = grep { $_ } @array;

A solução ainda não é das mais seguras (depende um pouco dos teus 
dados). Cuidado, "0" é uma excessão notável de coisa que parece 
"verdadeiro" mas é "falso". ;)

Putamplexos!
-- 
Luis Motta Campos (a.k.a. Monsieur Champs) is a software engineer,
Perl fanatic evangelist, and amateur {cook, photographer}


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