| IO-Dir-Dirfd documentation | Contained in the IO-Dir-Dirfd distribution. |
IO::Dir::Dirfd - Perl extension to extract the file descriptor from a dirhandle
use IO::Dir::Dirfd; opendir D, "." or die $!; my $fd = dirfd(D); use IO::Dir::Dirfd qw(fileno); opendir D, "." or die $!; my $fd = fileno(D);
The IO::Dir::Dirfd module provides the possibility to extract the file descriptor from a directory handle on platforms where this functionality is available.
It exports a single sub, dirfd(), by default. If you specify that you want to export fileno(), the core fileno() will be overrided. After this you can use fileno() for both file- and dirhandles.
As of now, the module was only tested on FreeBSD 4.4 and FreeBSD 5.0; there's no garantee it will work as advertised elsewehere (or even on FreeBSD, for that matter).
It is possible that the fileno(HANDLE) form will not work under all circumstances. Use fileno(*HANDLE) instead if in doubt.
Anton Berezin, tobez@catpipe.net
dirfd(3).
| IO-Dir-Dirfd documentation | Contained in the IO-Dir-Dirfd distribution. |
# ---------------------------------------------------------------------------- # "THE BEER-WARE LICENSE" (Revision 42) # <tobez@catpipe.net> wrote this file. As long as you retain this notice you # can do whatever you want with this stuff. If we meet some day, and you think # this stuff is worth it, you can buy me a beer in return. Anton Berezin # ---------------------------------------------------------------------------- # # $Id: Dirfd.pm,v 1.1.1.1 2001/11/21 17:30:15 tobez Exp $ # package IO::Dir::Dirfd; use strict; use vars qw($VERSION @ISA @EXPORT @EXPORT_OK); require Exporter; require DynaLoader; @ISA = qw(Exporter DynaLoader); @EXPORT = qw(dirfd); @EXPORT_OK = qw(fileno); $VERSION = '0.01'; sub dirfd(*); bootstrap IO::Dir::Dirfd $VERSION; sub fileno(*) { no strict "refs"; my $no; eval { $no = CORE::fileno($_[0]) }; return $no if defined $no; my $arg = $_[0]; $! = 0; unless (ref($arg) || $arg =~ /(^\*)|(::)/) { my $caller = caller || 'main'; $arg = "${caller}::$arg"; } $no = dirfd($arg); use strict "refs"; $no; } 1; __END__