Читайте снизу вверх:
@array
Массив (имен файлов с учетом последующего использования).
map [$_,-s $_],
Для каждого имени файла получите ссылку на двухэлементный анонимный массив, где первый элемент - это имя файла, а второй - размер в байтах файла. Карта возвращает список этих ссылок на массив.
sort{$a->[1] <=> $b->[1]}
Сортировка списка ссылок на массивы по возрастанию размера файла.
map $_->[0],
Превратить список ссылок на массивы обратно в список имен файлов, но теперь в отсортированном порядке.
my @output =
Сохранить список в @ output.
По функциям это эквивалентно:
my @output = sort { -s $a <=> -s $b } @array;
, но получает размер каждого файла только один раз, а не один раз за сравнение, выполненное сортировкой.