The system call creates a subprocess. That subprocess changes
it's current directory - but then it exits. You can't run cd in a subprocess and have it affect the parent - it would be a big security hole.
What you can do is run Perl's builtin chdir. That will do what you want.