Amen. Years later and this is still a very useful post. I don't know what the difference is, but this method:
print <<`ShellOut`;
...
ShellOut
was the only way I could get this to work. Never had a problem before, but I just set up a new CentOS machine, tried to run some shell commands using "system" or just backticks, and it would not work. The lack of a persistent session issue is duly noted -- that was ONE of my issues, but even once I realized that a "cd" in one "system" command did not apply to the next "system" command, it would not work correctly.
Again, I don't know why the above method does work when the others do not, but I am not going to dwell on it - I just wanted it to work. Thank you.