В Perl:
a) скалярный контекст трех типов: строковый, числовой, безразличный;
б) $a eq $b - $a и $b приводятся к строкам и сравниваются $a == $b - $a и $b приводятся к числам и сравниваются.
PHP не Perl и оператор всего один - '==', а по ману
PHP не требует (и не поддерживает) явного типа при определении переменной; тип переменной определяется по контексту, в котором она используется.
Чтобы сохранить один значок ' == ', расширили понятие контекста добавив анализ операндов.
Получилось криво, хотели сэкономить, а получили невозможность сравнения '8' и '08' короткой записью и в строковом контексте и в PHP 4 ввели '===', типа выкрутились.
В PHP нет никакой логики, логика есть в Perl, Phyton, а в PHP человеческая лень.
