为什么我可以打开undef?

Nat*_*enn 8 perl file-io undefined

以下不会死:

open my $in, '<', undef or
    die q{couldn't open undef};
print <$in>;
Run Code Online (Sandbox Code Playgroud)

这也不是:

open my $in, '>', undef or
    die q{couldn't open undef};
print $in 'hello';
Run Code Online (Sandbox Code Playgroud)

我不明白为什么这些都不会死.开放怎么undef可能成功?我发现这个的原因是我和一个人一起做过这个:

open my $in, '>', $ARGV[0] or die q{couldn't open $ARGV[0]};
Run Code Online (Sandbox Code Playgroud)

如果没有传递任何参数,他认为这会杀死剧本(我知道这不是最干净的方法,但我认为这不会起作用).

我正在使用草莓5.16.1.

Den*_*aev 10

perldoc -f open:

作为特殊情况,具有读/写模式的三参数形式和第三个参数是undef:

open(my $tmp, "+>", undef) or die ...
Run Code Online (Sandbox Code Playgroud)

打开一个匿名临时文件的文件句柄.

  • @Oesor适用于所有模式:只读,只写,读写.在任何情况下都会打开一个匿名临时文件.但是只读或只写模式没有实际应用. (5认同)
  • 我也这么认为,但它没有被打开读/写.我怀疑这是与此无关的无证行为,但我不确定. (2认同)