open関数の第一引数であるディスクリプタハンドルにスカラー変数を指定できるか?
通常、open関数の第一引数は、ファイルのディスクリプタハンドルです。
普通、ディスクリプタハンドルは、大文字のベアワードを指定します。
しかし、ディスクリプタハンドルにスカラー変数を指定しているケースに遭遇しました。
そこで、このケースをテストしてみました。
テスト結果
このときのスカラー変数は、型グロブのリファレンスになっていました。
したがって、まず該当ディスクリプタハンドルがどこかにあって、それの型グロブリファレンスが、デディスクリプタハンドルとして使用できるみたいです。
use strict; my $fd; open $fd, "test.txt"; print <$fd>; # 正常にアクセスできる print "--->" . ref($fd) . "<---\n"; # 『--->GLOB<---』が表示される close $fd;
追記:open関数の第一引数は、ディスクリプタでなくハンドルでした。
ちなみに、ディスクリプタはfileno関数で取得ができます。