in reply to sourcing the csh script issue

You have 2 forks going on there - one from system and one from the csh which you've put as part of the command. There's no way that the source.csh code executing in the grandchild process will directly affect anything in the grandparent process.

The correct approach is to put the env vars in a config file and process that natively in the perl script (or use a module, or source your csh script before starting the perl script, etc.)