Perl 为什么我可以打开undef?

Perl 为什么我可以打开undef?,perl,file-io,undefined,Perl,File Io,Undefined,以下情况不会消失: open my $in, '<', undef or die q{couldn't open undef}; print <$in>; 我不明白为什么这两个人都没死。打开undef怎么可能成功? 我发现这是因为一个和我一起工作的人做了这件事: open my $in, '>', $ARGV[0] or die q{couldn't open $ARGV[0]}; 他认为,如果不传入任何参数,这将扼杀脚本(我知道这不是最干净的方法,但我认为它

以下情况不会消失:

open my $in, '<', undef or
    die q{couldn't open undef};
print <$in>;
我不明白为什么这两个人都没死。打开
undef
怎么可能成功? 我发现这是因为一个和我一起工作的人做了这件事:

open my $in, '>', $ARGV[0] or die q{couldn't open $ARGV[0]};
他认为,如果不传入任何参数,这将扼杀脚本(我知道这不是最干净的方法,但我认为它不会起作用)


我使用的是草莓5.16.1。

请参见
perldoc-f open

作为一种特殊情况,三参数形式具有读/写模式和 第三个参数是
unde

open(my $tmp, "+>", undef) or die ...
打开匿名临时文件的文件句柄


我也这么想,但它没有被读/写打开。我怀疑这是与此相关的未记录的行为,但我不能确定。我可以确认Perl 5.10.1和5.18.1都是以这种方式运行的,
'>'
以及
'+>'
。了解哪些版本的Perl可以做到这一点可能会很有趣。@o或者它适用于所有模式:只读、只读、读写。在任何情况下,都会打开一个匿名临时文件。但是只读或只读模式没有实际应用。那么,也许我会为此发送一个文档补丁。我不确定Perl是否应该通过文档化来提供这种行为。请参阅
open(my $tmp, "+>", undef) or die ...