在 perl 中,用于打开文件的旧 2 参数版本open
(即)已弃用。出于安全原因,应将其替换为 3 参数版本。不过,有一种情况下,3 参数版本的行为与 2 参数版本不同:open FILEHANDLE,EXPR
open FILEHANDLE,MODE,EXPR
2-argopen
将特殊文件名解释-
为标准输入。例如,
echo foo | perl -e 'open my $fh, "-"; $_ = <$fh>; print $_;'
和
echo foo | perl -e 'open my $fh, "<-"; $_ = <$fh>; print $_;'
产生输出foo
。在 3 参数版本中,的特殊解释-
已经消失:
echo foo | perl -e 'open my $fh, "<", "-"; $_ = <$fh>; print $_;'
不打印任何内容。
open
使用 3-arg 来模拟 2-arg 的这个特性的标准或推荐方法是什么open
?(在具体应用中,文件名是程序的一个参数,可能是也可能不是-
。)