打开文件句柄或分配标准输出
我正在开发一个程序,用户可以传递 -o file
选项,然后输出应该定向到该文件。否则,它应该转到标准输出。
为了检索选项,我使用了 getopt long 模块,这不是问题。问题是我想用该文件创建一个文件句柄或如果未设置该选项则将标准输出分配给它。
if ($opt) {
open OUTPUT, ">", $file;
} else {
open OUTPUT, # ???
}
那是因为这样,稍后在我的代码中我可以:
print OUTPUT "...";
而不用担心 OUTPUT
是标准输出还是用户指定的文件。这可能吗?如果我在这里做的设计不好,请告诉我。
I'm working in a program where the user can pass a -o file
option, and output should be then directed to that file. Otherwise, it should go to stdout.
To retrieve the option I'm using the module getopt long, and that's not the problem. The problem is that I want to create a file handle with that file or assign stdout to it if the option was not set.
if ($opt) {
open OUTPUT, ">", $file;
} else {
open OUTPUT, # ???
}
That's because this way, later in my code I can just:
print OUTPUT "...";
Without worrying if OUTPUT
is stdout or a file the user specified. Is this possible? If I'm doing a bad design here, please let me know.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这将是一个关于如何使用 select 的好例子。
This would be a good example on how to use select.
查看
open
文档。最简单的方法是重新打开STDOUT
本身,并且不在代码中使用文件句柄。(当然添加一些错误检查。)
Look at the
open
documentation. The easiest is to reopenSTDOUT
itself and not use a filehandle in your code.(Add some error checking of course.)
无法分配诸如
OUTPUT
之类的常量项。使用诸如$output
之类的变量效果更好。例如:这样程序可以打印到标准输出和/或输出文件:
A constant item such as
OUTPUT
cannot be assigned. Using a variable such as$output
works better. For example:That way the program can print to standard output and/or to an output file: