Just a note as to why you're getting these other solutions: when you're using backticks or system or whatever to run your source command a completely new shell is starting up, running the commands in the source'd script and changing that new shell's environment, and then that shell exits and any modifications disappear. The *NIX process model doesn't allow a child process to modify its parent's environment (as is noted in perlfaq8, "I {changed directory, modified my environment} in a perl script. How come the change disappeared . . .?" )
The cake is a lie.
The cake is a lie.
The cake is a lie.