if (fork == 0) { # create a subprocess $ENV{myvariablename} = "desired variable value"; # set the variable ... exec("/path/to/program","some","program","arguments"); # run the program } #### open my $shell, "|/bin/sh" || die "$!\n"; print $shell "export var=value\n"; ... print $shell "some complicated shell command # ;(){:|:&};:\n"; print $shell "/run/the/program --with-args\n"; #### system <<"END"; export var=value ... some() {shell commands} /run/some/program END