This is a FAQ (search for "I {changed directory, modified my environment} in a perl script" in that page). You're running something which executes commands which change the shell's environment. In your case, you run the shell, which then immediately exits. Your Perl process' environment is untouched.
Update: That being said, the presumption that you should run everything from Perl and ignore the shell's kind of daffy. Right tool for the right job. You don't use a chainsaw to do dental work, you don't try and paint your walls with a hedgehog.