it is only modifying the environment of the subshell that is running your shell script. the syntax ". shellscript.sh" only works in sh/bash/etc. all it is doing is saying "run these commands as if i typed them at the command prompt". if you want to modify environment variables inside your perl script, you will need to modify $ENV yourself.