[Cascavel-pm] extremamente perdido
Nilson Santos Figueiredo Junior
acid06 em gmail.com
Quinta Agosto 18 12:15:34 PDT 2005
On 8/17/05, Luis Campos de Carvalho <monsieur_champs em yahoo.com.br> wrote:
> Seria? Certo? Eu vejo mais flexibilidade do que você nestas coisas...
> mesmo cuspindo um aviso, o perl sabe o que fazer para comparar as
> strings. :-) conforto para quem programava C, e nenhum problema
> (inicialmente, claro!!)
Estou dizendo isso no tom mais amigável possível, mas acho que você tá
vendo mais flexibilidade do que deveria. ;-)
'==' *NÃO* pode ser usado no lugar de 'eq'
Observe a diferença entre as saídas de:
perl -e "$var = 'teste'; print $var == 'abacaxi' ? 1 : 0"
e
perl -e "$var = 'teste'; print $var eq 'abacaxi' ? 1 : 0"
O perl *não* sabe o que fazer. '==' serve para realizar uma comparação
numérica, ou seja, ele converte ambos os lados da expressão para
números antes de realizar a comparação. Dessa forma, quaisquer duas
strings que não contenham números em seu conteúdo retornaram
verdadeiras caso comparadas com '=='.
E assim como '==' não pode ser usado no lugar de 'eq', o contrário
também é verdadeiro. Observe a diferença entre as saídas de:
perl -e "$var = '123.0'; print $var eq 123 ? 1 : 0"
e
perl -e "$var = '123.0'; print $var == 123 ? 1 : 0"
Na verdade, '==' e 'eq' são operadores que vez ou outra acabam gerando
problemas. Foi até sugerido que os operadores que operam sobre strings
('eq', 'ne', etc) fossem removidos e deixar os seus equivalentes
numéricos fazerem todo o trabalho, mas o Larry Wall rejeito a idéia
(sabe-se lá por que).
-Nilson Santos F. Jr.
Mais detalhes sobre a lista de discussão Cascavel-pm