Как определить, связано ли stdout с tty в Perl?

Я ищу эквивалент Perl для этого кода на Python:

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

Ответы

Ответ 1

Используйте оператор - t filetest.

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

Обратите внимание, что в Perl STDOUT может быть привязан (по существу, к сложному перегруженному объекту), поэтому вывод в STDOUT может по-прежнему достигать TTY, даже если он не привязан к нему напрямую.

Ответ 2

Используйте IO::interactive, если требуется, чтобы STDOUT фактически подключался к терминалу, а не просто перенаправлялся на /dev/null/ или что-то еще.