sub biblically { $order{$a->[0]} <=> $order{$b->[0]} || $a->[1] <=> $b->[1] || $a->[2] <=> $b->[2] } my @sorted = map $_->[-1], sort biblically map [/(.*?) ([0-9]+):([0-9]+)/, $_], @unsorted;