PERL - Полезные советы
Попробуем отсортировать по возрастанию числа от 1 до 10. sort 1..10 дает нам результ ('1', '10', '2', '3', '4', '5', '6', '7', '8', '9'). Немного не то... Сортировка сработала как расстановка по алфавиту. Проблему можно решить с помощью оператора <=>. По умолчанию функция сортировки sort
выполняет расстановку по алфавиту (сортировка в
контексте символьных строк). Таким образом '10' и '100'
появятся перед '2' и '3'. Чтобы изменить способ
сортировки в данном случае мы применили собственный
оператор сравнения двух переменных (блок сортировки).
Автор: Joseph N. Hall Сортировка одного массива в соответсвии с содержимым другого массива. Нам надо отсортировать два "параллельных" массива (списка). Например массив @page состоит из номеров страниц, а @note состоит из примечаний к этим страницам, т.е. $note[$i] - это примечание к странице $page[$i]. Нам хочется напечатать оба массива, отсортировав их по номерам страниц.
Автор: Joseph N. Hall Сортировка по убыванию. Надо просто поменять местами переменные $a и $b в блоке сравнения.
Автор: Joseph N. Hall Сортировка ключей хэш-массива в порядке возрастаний их значений. Имеем хэш-массив, состоящий из слов книги и количеством повторений этих слов. Нам надо напечатать этот массив в порядке убывания частоты слова.
Автор: Joseph N. Hall Сортировка имен файлов по дате/времени изменения. Оператор -М возвращает дату/время
изменения файла в виде числа с плавающей точкой.
Проблема состоит в том, что оператор -М выполняется
очень медленно и на больших списках файлов операция
сортировки может занять очень много времени. Для
сортировки n файлов блок сравнения будет вызван примерно
n log n раз. Для решения этой проблемы смотрите пример
сортировки Шварца.
Автор: Joseph N. Hall Сортировка величин, время сравнения которых сравнительно велико. Например, нам надо отсортировать файлы по времени последнего изменения, но оператор -М (время последнего изменения файла) работает очень медленно. Решить проблему можно с помощью сортировка Шварца (по имени Рандала Шварца Randal Schwartz). Суть метода заключается в том, что
медленные вычисления производятся только один раз, а их
результат сохраняется во временном массиве. Дальнейшая
сортировка производится над значениями временного
массива.
Автор: Joseph N. Hall Сортировка строк по полям, разделенным символом. Например, хочу отсортировать строки, разделенные на поля запятой, сначала по второму полю по числам, затем по первому полю по алфавиту в порядке убывания. На самом деле большая часть
приведенного выше кода - это препроцессор, который
готовит данные для дальнейшей сортировки Шварца.
Автор: Joseph N. Hall |