Search code examples
perlstdouttty

How do I detect if stdout is connected to a tty in Perl?


I'm looking for the Perl equivalent to this Python code:

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

Solution

  • Use the -t filetest operator.

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

    Note that in Perl, STDOUT can be tied (essentially an overcomplicated overloaded object) so output to STDOUT may still reach a TTY even if its not directly attached to one.