通过open的新功能连接到内存对象的文件句柄可能会返回undefined,即使它们是打开的。
这是指一般打开的新式调用,还是打开的IO::Scalar样式调用?
答案 0 :(得分:4)
这段代码似乎表明它只适用于open的IO :: Scalar版本。这可能是因为没有与文件句柄相关联的底层操作系统级别文件。
#!/usr/bin/perl
use 5.010;
use strict;
use warnings;
my $fakefile = "foo\nbar\nbaz\n";
open my $fake, "<", \$fakefile
or die "could not open fakefile [$fakefile]: $!";
open my $script, "<", $0
or die "could not open self for reading: $!";
print "fake: ", my_fileno($fakefile), "\nreal: ", my_fileno($script), "\n";
sub my_fileno {
my $fileno = fileno shift;
$fileno //= "undef";
return $fileno;
}