[perl #118651] don't overwrite $! in readdir()

POSIX expects readdir() to leave errno alone when it reaches end of
directory without an error so that case can be detected.  Do the same
in perl.