LINUX.ORG.RU

СРАВНЕНИЕ В PERL !


0

0

КАК ПРАВИЛЬНО СРАВНИТЬ ВЕРСИИ 2 ФАЙЛОВ, ЕСЛИ ОНА СОСТОИТ ИЗ БУКВ И ЦИФР ОДНОВРЕМЕННО (НАПР. 0.93a.). ПРИ ЧИСЛОВОМ СРАВНЕНИИ СРАВНИВАЮТСЯ ТОЛЬКО ЦИФРЫ, А ПРИ СТРОКОВОМ ЗНАЧЕНИЯ В ДРУГИХ СЛУЧАЯХ СРАВНИВАЮТСЯ НЕ ТАК, КАК НАДО, НАПРИМЕР, ASCI-ЗНАЧЕНИЕ ЦИФРЫ 3 МЕНЬШЕ ASCI-ЗНАЧЕНИЯ ЦИФРЫ 7, ПОЭТОМУ 30 МЕНЬШЕ 7 !ПОДСКАЖИТЕ ВАРИАНТ? ЗАРАНЕЕ БЛАГОДАРЮ!


Готового решения нет. Скорее всего придется разбивать строки-версии на числа/нечисла и последовательно сравнивать, выбирая нужные методы.

anonymous
()
Ответ на: комментарий от vilfred

Я так понял, что человек хочет осортировать строчки типа "0.2333-aaaa56.6ttt67.766" так, чтобы числовые куски были отсортированы как числа, а остальное - по алфавиту.

anonymous
()
Ответ на: комментарий от vilfred

нуно сравнить версии нескольких файлов и в соответствии с результатом сравнения выбрать файл с более новой версией.Если сравнивать части версии как числа, то содержание букв игнорируется, а если как строки, то выходит, что 5 больше 20. Как же быть?

ader
() автор топика
Ответ на: комментарий от ader

sort { $a <=> $b || $a cmp $b } @list
пробовал?

По крайней мере если сначала идут цифры, потом буквы, то оно будет отсортировано...

Zulu ★★☆☆
()
Ответ на: комментарий от Zulu

Необходимо поочередно сравнивать версии 2х файлов с одинаковым именем и в случае старшинства версии одного из них делать какие-то действия!

ader
() автор топика
Ответ на: комментарий от ader

Наконец-то догнал!Буквы имеют значение только при цифровом равенстве версии,поэтому сначала проверяем на числа и если равны,то проверяем на буквы!

ader
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.