Оператор 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; # Теперь коллекция упорядочена

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела Perl на эту тему:
в списочном контексте
Главная служебная переменная: $_
Интерполяция массивов в строках
Использование выражений, создающих скаляры, в списочном контексте
Использование выражений, создающих списки, в скалярном контексте

Вернуться в раздел: Perl / 2. Списки и массивы