I think bhagperl might be attempting to write a perl script that alters his environment similar to the very common bash idiom of sourcing a script such as:

[username@localhost]$ . ./set_envs.sh

If you attempt something like that with a perl script it does not work because perl runs in a child process of the current shell, and any changes it makes to it's environment don't affect the calling process (the user's shell).

The solution (under unix) is to use eval and backticks and have perl emit the commands to change the environment to stdout. eg:

does a child process in PERL has access to Parent process's env variables

Sigh. There ain't no PERL. The language is named Perl, and the executable that reads it is named perl.

No, a child process can not access the environment of the parent, at least not in a portable way (i.e. without playing dirty tricks). Most of the times, the child process inherits a COPY of the environment, but in special cases, the childs environment may be manipulated by the parent before starting the child.

No. This is the same question as before. Allowing that would be dangerous.

I want a child process to run some commands and then change parent process's env settings.

Make perl emit a shell script that can be sourced by the parent shell (after perl has exited) to change its environment. Or even better: Run the entire job from within Perl, so you don't have to mess with any shells.

Alexander

--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so". ;-)