Ваше предположение верно.Алфавитные операторы, такие как lt
, сравнивают переменные как строки, тогда как символические операторы, такие как <, сравнивают их как числа.Вы можете прочитать <a href="http://perldoc.perl.org/perlop.html#Relational-Operators" rel="noreferrer">perlop
справочную страницу для более подробной информации.
Обоснование заключается в том, что скаляры в Perl не являются типизированными, поэтому без вашего ведома Perl не будет знать, как сравнивать две переменные,Если бы он все-таки угадал, то иногда получал бы ошибку, что приводило бы к необходимости делать такие вещи, как ' ' + $a < ' ' + $b
, для принудительного сравнения строк, что, вероятно, хуже, чем lt
.
То есть это ужасная ошибкакоторая, вероятно, ловит всех новичков в Perl и все еще ловит меня, когда я возвращаюсь в Perl через некоторое время, используя менее постмодернистский язык .