如何检测stdout是否连接到Perl中的tty?

buk*_*zor 14 perl stdout tty

我正在寻找相当于这个Python代码的Perl:

from sys import stdout
if stdout.isatty():
    print "yes"
else:
    print "no"
Run Code Online (Sandbox Code Playgroud)

Sch*_*ern 15

使用-t filetest运算符.

print -t STDOUT ? "Yes\n" : "No\n"
Run Code Online (Sandbox Code Playgroud)

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

  • IO::Interactive 显示了您可能也想考虑的特殊情况。 (2认同)

Ped*_*lva 8

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