use IPC::Run qw( run ); # just a silly command to execute in another process, to demonstrate # how input, output and error all relate my $command = q; # but that way is sensitive to what shell you are using, # (whether it is ok to use ' or " to quote in the shell) # this way is shell-independant: $command = ['perl', '-lpe', 's/b/t/; warn qq{Oh, no! A z in "$_"! What a world, what a world!\n} if /z/']; my ($in, $out, $err); $in = "foo\nbar\nbaz\n"; run $command, \$in, \$out, \$err; #### ------------ :Wq Not an editor command: Wq