При попытке использовать код:
<pre>
sub fieldsort {
my ($sep, $cols);
if (ref $_[0]) {
$sep = '\\s+'
} else {
$sep = shift;
}
unless (ref($cols = shift) eq 'ARRAY') {
die print "fieldsort columns must be in anon array";
}
my (@sortcode, @col);
my $col = 1;
for (@$cols) {
my ($a, $b) = /^-/ ? qw(b a) : qw(a b);
my $op = /n$/ ? '<=>' : 'cmp';
push @col, (/(\d+)/)[0] - 1;
push @sortcode, "\$${a}->[$col] $op \$${b}->[$col]";
$col++;
}
my $sortfunc = eval "sub { " . join (" or ", @sortcode) . " } ";
my $splitfunc = eval 'sub { (split /$sep/o, $_)[@col] } ';
return
map $_->[0],
sort { $sortfunc->() }
map [$_, $splitfunc->($_)],
@_;
}
</pre>
Вот таким образом:
@out = &fieldsort( '\|', ['4n',5], @in );
На некоторых файлах вылазит ошибка:
e-sort line 02 ...Use of uninitialized value in numeric comparison () at (eval 3) line 1, line 3. ... OK.
Иногда по нескольку штук. Все файлы при этом нормально сортируются, но ведь непорядок, верно?
Ошибка явно связана с содержимым файла, правда "плохие" строки ещё не нашёл. при этом "line 1" присутствует всегда.
Идеи есть? Или доки на русском где? поиском не нарыл что-то...