perl-5.38.0
fileno FILEHANDLE
fileno DIRHANDLE

Returns the file descriptor for a filehandle or directory handle, or undefined if the filehandle is not open. If there is no real file descriptor at the OS level, as can happen with filehandles connected to memory objects via open with a reference for the third argument, -1 is returned.

ファイルハンドルやディレクトリハンドルに対するファイル記述子を返します; ファイルハンドルがオープンしていない場合は未定義値を返します。 OS レベルで実際のファイル記述子がない( open の第 3 引数にリファレンスを 指定してファイルハンドルがメモリオブジェクトと結びつけられたときに 起こります)場合、-1 が返されます。

This is mainly useful for constructing bitmaps for select and low-level POSIX tty-handling operations. If FILEHANDLE is an expression, the value is taken as an indirect filehandle, generally its name.

これは主に select や低レベル POSIX tty 操作に対する、ビットマップを構成するときに便利です。 FILEHANDLE が式であれば、 その値が間接ファイルハンドル(普通は名前)として使われます。

You can use this to find out whether two handles refer to the same underlying descriptor:

これを、二つのハンドルが同じ識別子を参照しているかどうかを見つけるのに 使えます:

    if (fileno($this) != -1 && fileno($this) == fileno($that)) {
        print "\$this and \$that are dups\n";
    } elsif (fileno($this) != -1 && fileno($that) != -1) {
        print "\$this and \$that have different " .
            "underlying file descriptors\n";
    } else {
        print "At least one of \$this and \$that does " .
            "not have a real file descriptor\n";
    }

The behavior of fileno on a directory handle depends on the operating system. On a system with dirfd(3) or similar, fileno on a directory handle returns the underlying file descriptor associated with the handle; on systems with no such support, it returns the undefined value, and sets $! (errno).

ディレクトリハンドルに対する fileno の振る舞いは オペレーティングシステムに依存します。 dirfd(3) のようなものがあるシステムでは、ディレクトリハンドルに対する fileno はハンドルに関連付けられた基となる ファイル記述子を返します; そのような対応がないシステムでは、未定義値を返し、 $! (errno) を設定します。