[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