Сортировка массива
В результате МЫ получим неправильную сортировку, ведь "Единый" И "Едини- ца2" больше "единица1". Изменим стандартную сортировку на свою сорти¬ровку без учета регистра:
#!/usr/bin/perl -w
# Выводим все сообщения об ошибках
# в окно Web-браузера
use CGI::Carp qw(fatalsToBrowser);
# Настройка локали use locale;
use POSIX * localeJi1;
setlocale(LC_CTYPE, 1ru_RU.CP1251");
print "Content-type: text/html\n\n";
@Hass=("единица1", "Единица2", "Единый");
@Mass=sort { f_sort($a, $b) } @Mass; for($i=0; $i<@Mass; $i++) { print "$Mass[$i] ";
} # единица1 Единица2 Единый
# Функция пользовательской сортировки sub f_sort {
$strl = lc($ [0]); # Преобразуем к нижнему регистру
$str2 = 1с($__ [1]); # Преобразуем к нижнему регистру if ($str1 gt $str2) { return 1; } if ($strl It $str2) { return -1; } return 0;
}
Для этого две переменные приводим к одному регистру, а затем производим стандартное сравнение. Заметьте: мы не изменяем регистр самих элементов массива, а работаем с их копиями. Для правильной работы функции 1с о с русским языком необходимо настроить локаль. Это позволяет сделать функция setlocale о. Более подробно мы рассмотрим функцию setlocale о при изучении функций обработки строк.
Страница:
1 |
2