use IPC::Open3; sub NameOfCommandInterface { # subcommand, envvar, val, envvar, val... my $subcommand = shift; my $env = ''.; while ( @_ ) { $env .= 'export ' . shift(); $env .= '="' . shift() . '";'; } my $pid = open3 my $wh, my $rh, my $eh, $env . 'NameOfCommand' or die $!; print $wh $subcommand; close $wh; my @er = <$eh> and die ( join ('',@er )); close $eh; my @rt = <$rh>; close $rh; waitpid $pid, 0; return @rt; }