my ($reader, $writer) = (IO::Handle->new(), IO::Handle->new()); my $command = "sort /reverse"; eval { open2($reader, $writer, $command); }; if ($@) { warn "CRAP $! $@ \n"; } foreach (@data) { print $writer $_ ."\n"; } close ($writer); while ($_ = $reader->getline()) {print $_;} close ($reader); }