Для удаления дубликатов лучше всего использовать List :: MoreUtils 'uniq
,:
use List::MoreUtils 'uniq';
my @unique_list = uniq @list;
или без CPAN (хотя это редко требуется):
my %values;
@values{@list} = ();
my @unique_list = keys %values;
Вы можете отсортировать любой список, используя встроенную функцию sort - см. perldoc -f sort и perldoc -q 'Как отсортировать массив' .
Кстати, данные, которые вы указали, не соответствуют описанному вами поведению. Если вы объявите массив как
@uniqarr = qw(error 0 goodrecordno:6123, error 0 goodrecordno:6143, error 1 goodrecordno:10245, error 1 goodrecordno:10678, error 1 goodrecordno:10698, error 2 goodrecordno:16245, error 2 goodrecordno:16123);
... тогда его содержимое будет содержать:
(
'error',
'0',
'goodrecordno:6123,',
'error',
'0',
'goodrecordno:6143,',
'error',
'1',
'goodrecordno:10245,',
'error',
'1',
'goodrecordno:10678,',
'error',
'1',
'goodrecordno:10698,',
'error',
'2',
'goodrecordno:16245,',
'error',
'2',
'goodrecordno:16123'
);
Что вам нужно сделать, это прочитать данные в хеш-таблицу , а затем проанализировать в соответствии с вашими критериями. Я не могу идти дальше, так как не совсем понятно, что вы ищете. Пожалуйста, прочтите perldoc perldata и perldoc perldsc , чтобы узнать больше о структурах данных Perl.