Как сделать множественную сортировку с помощью perl? - PullRequest
0 голосов
/ 17 декабря 2011

У меня есть этот фрагмент, который сортирует значения, например, Title2 2005; Title2 1998; Title3 1994; и т.д. к десятилетию и работает без нареканий. Но мне нужно добавить дополнительную сортировку уже отсортированных десятилетий - сначала в порядке убывания, а затем в алфавитном порядке. Если я использую подпрограмму second_sort, я получаю сообщение об ошибке «Не удается найти метод объекта через пакет». Есть ли у меня небольшая ошибка в моем коде, или моя логика полностью неверна, и я должен искать другой подход.

Спасибо.

use autodie;
use strict;
use warnings;
use HTML::TreeBuilder;


my %sort = ();
push (@{$sort{$decade}}, $t );

for my $decade ( sort { $b <=> $a } keys %sort ) {

    my @td = map { $_->as_HTML("<>&","\t",{}) }  second_sort( @{$sort{$decade}} );
}

sub second_sort {
    my @sorted = map { @$_ }
            sort {  $b->[1] <=> $a->[1] || lc $a->[0] cmp lc $b->[0]  }
            map {
                my ($title, $year) = ($_->as_trimmed_text =~ /(.*?)\((\d+)\).*/);
                [$title, $year];
                } @_;
    return @sorted;
}

1 Ответ

1 голос
/ 17 декабря 2011

Похоже, вам не хватает использования модуля HTML :: Element для предоставления 'as_trimmed_text'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...