我有这个片段,它对值进行排序,例如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;
}
答案 0 :(得分:1)
您似乎缺少使用HTML :: Element模块来提供'as_trimmed_text'。