Для Perl 10 - это 10 независимо от того, хранится ли она в виде строки (PV), целого числа со знаком (IV), целого числа без знака (UV) или числа с плавающей запятой (NV).
<
, >
и ==
сравнивают числовые значения их операндов.Тогда числовое значение вещи, которая не является числом, равно нулю *, поэтому числовое значение flight
равно нулю (с предупреждением), а числовое значение Joe
равно нулю (с предупреждением), поэтому они равны.
С другой стороны, числовое значение строки 10
равно 10, а числовое значение строки 2
равно 2, поэтому
10 >= 2 # True
'10' >= '2' # True
10 ge 2 # False (ord('1') is less than ord('2'))
'10' ge '2' # False
* - объекты могут быть переопределеныthis, а числовое значение ссылки является адресом ссылочного значения.