我有一个带有输入和输出文件参数的perl程序,我想支持使用“ – ”指定标准输入/输出的约定.问题是我不能只打开文件名,因为open(我的$input,’<',' - ')打开一个名为 - 的文件,而不是标准输入.所以我必须做这样的事情:
my $input_fh; if ($input_filename eq '-') { # Special case: get the stdin handle $input_fh = *STDIN{IO}; } else { # Standard case: open the file open($input_fh,'<',$input_filename); }
类似的输出文件.有没有办法在没有自己测试特殊情况的情况下做到这一点?我知道我可以破解ARGV文件句柄来进行输入,但这对输出不起作用.
编辑:我被告知,2参数形式的开放实际上是我正在寻找的魔法.不幸的是,它还做了一些创造性的解释,以便将文件名与第二个参数中的模式分开.我猜开放的3参数形式是100%无魔法 – 它总是打开你告诉它的确切文件.我问是否可以为“ – ”设置一个例外,同时仍然明确地处理所有其他文件名.
我应该将上面的代码粘贴到子程序/模块中并停止抱怨吗?