Vous devez comparer des chaînes avec l'opérateur eq
, comme ceci:
if ($str eq $str2) { ... }
Il est en fait tout à fait une règle mnémotechnique pratique: lettres pour les chaînes, les non-lettres - pour les numéros (comme chaque opérateur de comparaison symbolique a un « verbeux 'alternative):
numbers | strings
-----------------
== | eq
!= | ne
< | lt
> | gt
<= | le
>= | ge
<=> | cmp
Sinon, une comparaison numérique sera utilisé: les deux opérandes seront jetés aux numéros, et les résultats de cette distribution seront comparés. Comme les deux chaînes commencent à partir d'un symbole non numérique (même après le rognage), il devient effectivement (0 == 0)
.
Notez que vous avez fait cette réponse posée avant si vous aviez commencé votre script avec ...
use warnings;
... pragma, comme je l'ai fait here:
Argument "http://ya.ru" isn't numeric in numeric eq (==) at t.pl line 5.
Argument "http://www.ykt.ru/cgi-bin/go?http://ya.ru" isn't numeric in numeric eq (==) at t.pl line 5.
Toujours 'utiliser des avertissements» – Tim