in reply to Testing for a directory handle

Maybe I'm missing something, but wouldn't  -d (see -X in perlfunc) do the trick (if a "folder" is a directory)? (If a folder is a file, then maybe  -f instead?)


Give a man a fish:  <%-{-{-{-<

Replies are listed 'Best First'.
Re^2: Testing for a directory handle
by ns550 (Novice) on Jan 29, 2018 at 03:59 UTC

    Unfortunately using -f and -d doesn't work if someone has already opened them as handles, instead it just throws an error saying 'The dirfd function is unimplemented'

      The dirfd function is unimplemented

      This only happens (for me) if the handle is a dirhandle:
      C:\_32>perl -le "opendir $rd, 'special' or die $!; print 'dir' if -d $ +rd; print 'file' if -f $rd;" The dirfd function is unimplemented at -e line 1. C:\_32>perl -le "opendir RD, 'special' or die $!; print 'dir' if -d RD +; print 'file' if -f RD;" The dirfd function is unimplemented at -e line 1. C:\_32>perl -le "opendir RD, 'special' or die $!; print 'dir' if -d \* +RD; print 'file' if -f \*RD;" The dirfd function is unimplemented at -e line 1.

      With a filehandle it seems fine:
      C:\_32>perl -le "open $rd, 'try.pl' or die $!; print 'dir' if -d $rd; +print 'file' if -f $rd;" file C:\_32>perl -le "open RD, 'try.pl' or die $!; print 'dir' if -d RD; pr +int 'file' if -f RD;" file C:\_32>perl -le "open RD, 'try.pl' or die $!; print 'dir' if -d \*RD; +print 'file' if -f \*RD;" file
      Surely this behaviour with dirhandles is a serious bug that should be reported to p5p ?
      I can see nothing in the -X documentation that allows such behaviour, and I can see plenty there that disallows it.

      Cheers,
      Rob

        I will send an email to perlbug@perl.org with a link to this post