Когда вы сравниваете строки, используя числовые операторы отношений <
, >
и т. Д., Perl выдает предупреждение, если вы use warnings
. Тем не менее, Perl по-прежнему будет пытаться преобразовать строки в числа. Если строка начинается с цифр, Perl будет использовать их, иначе строка будет равна 0. В вашем примере сравнение «1.4.5» и «8.7.8» имеет тот же эффект, что и сравнение чисел 1.4 и 8.7.
Но для ne
, gt
и т. Д. Действительно не имеет значения, состоят ли ваши строки из чисел или чего-либо еще (включая точки). Поэтому:
print "greater" if '2.3.4' gt '10.1.2' # prints 'greater' because '2' > '1' stringwise
print "greater" if '02.3.4' gt '10.1.2' # prints nothing because '0' < '1' stringwise
Следовательно, вы не можете использовать ни >
, <
и т. Д., Ни gt
, lt
и т. Д. Для сравнения версий, вы должны выбрать другой подход, как предлагается, например, в других ответах.