chdir "-"; won't work anywhere. All I can say is "untested code".
It doesn't matter what your shell is. Perl is handing that to chdir(2) which is then looking (regardless of shell) for a subdirectory called dash underneath the current directory.
That's why you should always always always check the return status
of chdir -- to prevent such embarassment.