Оператор sort

Оператор sort получает список значений (например, из массива) и сортирует их во внутреннем порядке символов. Для ASCIIQстрок это будет «ASCIIQалфавитный» порядок. Конечно, ASCIIQсортировка, где все буквы верхнего регистра предшествуют всем буквам нижнего регистра, а цифры предшествуют буквам, не лучший вариант. Однако ASCIIQ сортировка всего лишь используется по умолчанию (в главе 14 будет показано, как установить любой другой порядок сортировки по вашему усмотрению):

@rocks = qw/ bedrock slate rubble granite /;
@sorted = sort(@rocks); # Получаем bedrock, granite, rubble, slate
@back = reverse sort @rocks; # Последовательность от slate до bedrock
@rocks = sort @rocks; # Отсортированный результат снова
# сохраняется в @rocks
@numbers = sort 97..102; # Получаем 100, 101, 102, 97, 98, 99


Как видно из последнего примера, сортировка чисел так, как если бы они были строками, может не привести к желаемому результату. По стандартным правилам сортировки любая строка, начинающаяся с 1, предшествует любой строке, начинающейся с 9. Как и в случае с reverse, аргументы при вызове не изменяются. Чтобы отсортировать массив, сохраните результат в исходном массиве:

sort @rocks; # ОШИБКА, @rocks не изменяется
@rocks = sort @rocks; # Теперь коллекция упорядочена
Теги:
массивы, списки
Добавлено: 20 Июля 2018 07:23:22 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...