my $shell_exports='exports.sh'; make_exports($shell_exports); open3(...); sub make_exports { my $file=shift; open(my $fh, '<', $file) or return 0; while(my $line=<$fh>) { $ENV{$1}=$2 if($line=~/^\s*export\s+(?:.+?\s+)?(\w+)=(.*?)\s*$/); } close($fh); return 1; }