This function returns the file descriptor for a filehandle. (A file descriptor is a small integer, unlike the filehandle, which is a symbol.) It returns undef if the handle is not open. It's useful for constructing bitmaps for select, and for passing to certain obscure system calls if syscall(2) is implemented. It's also useful for double-checking that the open function gave you the file descriptor you wanted - see the example under fcntl.
FILEHANDLE is an expression, its value is taken
to represent a filehandle, either indirectly by name, or directly
as a reference to a filehandle object.
A caution: don't count on the association of a Perl filehandle and a
numeric file descriptor throughout the life of the program. If a file
has been closed and reopened, the file descriptor may change.
STDERR start with
file descriptors of 0, 1, and 2 (the UNIX standard convention),
but even they can change if you start closing and opening them with
But you can't get into trouble with 0, 1, and 2 as long as you always
reopen immediately after closing, since the basic rule on UNIX
systems is to pick the lowest available descriptor, and that'll be the
one you just closed.