use IPC::Run qw( run ); my $in = "some text input to script"; my ($out, $err); run([ 'foo' ], \$in, \$out, \$err) or throw "run(foo): $err : $?";