use IPC::Run3; use IO::Pipe; my $cmd = "cmd /D/C dir"; my $out = new IO::Pipe; $out->reader(); my $err = new IO::Pipe; $err->reader(); run3 $cmd, $out, $err; print "OUT: $out ERR: $err\n"; map {print "$_\n"}<$out>; map {print "$_\n"}<$err>;