sub a { my(%v) = map({$w[$_], $_;} @w); my $n; sub { $v{$b} <=> $v{$a}; ++$n; } ; } sub _ { my $v = shift @_; sub { $\ = $v; $_ = ''; } ; } @w = sort({&a->($a, $b);} map({_ $_;} split(//, "erl hc\nker.aPust another J", 0))); foreach $_ (@w) { &$_; print $_; } testfile_orig syntax OK