этот код делает следующее. Есть файл со строками, в каждой из строк через три разделителя идут числа(которые могут быть одинаковыми), надо отсортировать и вывести эти строки в порядке возрастания или убывания по подстроке(третьему разделителю), этот код это делает, но я не могу понять как: print join "\n" => map {$_ -> [1]} sort {$a->[0] <=> $b->[0]} map {[/^#.*#.*#(.*)#/, $_]} grep {!$_{$1}++ if m!^#.*#.*#(.*)#!} @res; насколько я понял, нижняя строчка вырезает строки по уникальным подстрокам, вторая снизу заполняет какой-то массив(какой???) тем, что содержится в переменной $1, треться строчка снизу сортирует (и что такое $a и $b, и почему меняя местами буквы - получается сортировка reverse), и главное, я не понял, отчего ображение в четвертой строчке снизу идет в элементу $_ -> [1], хотя ниже было заполнение $a -> [0] ???