in reply to running sh script from perl script
The backticks execute the command in a subshell; so you're not changing the environment of the script that calls that subshell (i.e. your perl script). So you're not really doing anything wrong, per se. That's a limitation of the shell, not Perl. If you want to modify the environment your perl script is running under, do it by modifiying the %ENV hash from within your script.
I mistrust all systematizers and avoid them. The will to a system shows a lack of integrity -- F. Nietzsche