【问题标题】:How do I detect if stdout is connected to a tty in Perl?如何检测标准输出是否连接到 Perl 中的 tty?
【发布时间】:2011-03-31 20:13:03
【问题描述】:

我正在寻找与此 Python 代码等效的 Perl:

from sys import stdout
if stdout.isatty():
    print "yes"
else:
    print "no"

【问题讨论】:

    标签: perl stdout tty


    【解决方案1】:

    使用-t filetest operator

    print -t STDOUT ? "Yes\n" : "No\n"
    

    请注意,在 Perl 中,STDOUT 可以绑定(本质上是一个过于复杂的重载对象),因此到 STDOUT 的输出可能仍会到达一个 TTY,即使它没有直接连接到一个 TTY。

    【讨论】:

    • IO::Interactive 显示了您可能还想考虑的特殊情况。
    • 这个答案到底是怎么得到+5分的,而另一个(较早!)帖子完全的答案是-1分?
    • @Evgeny 这个答案最初是print -t 1 ? "yes\n" : "no\n"。不必要地使用 fileno 会导致投票失败。
    【解决方案2】:

    如果您需要 STDOUT 实际连接到终端,而不仅仅是重定向到 /dev/null/ 或其他什么,请使用 IO::interactive

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-26
      • 1970-01-01
      • 2020-10-28
      • 2020-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多