in reply to setenv

The enviromnent variables are part of the environment supplied by the operating system, just like memory and disk access.
(This is true for Unixes, i don't know about DOS)

Any program has a mechanism can set these variables in its memory space. These values get transfered to new children via the fork() system call. This is the reason that you can set such variable in bash/csh/tcsh etc and then run a program (i.e. fork) which can see these variables.

If memory serves, the C library has the info about it.
The perl way is $ENV{WHATEVER} as was mentioned above.

Cheers :)