Как узнать, подключен ли STDIN к терминалу в Perl?
if (-t STDIN) { # stdin is connected } else { # stdin is not connected }
Обычно я использую это в сочетании с -t STDOUT, чтобы узнать, запущен ли я из интерактивной оболочки или из cron, чтобы активировать больше вывода.
Вас также может заинтересовать IO :: Interactive , чтобы выяснить, считает ли Perl, что он взаимодействует с пользователем. Простое подключение к tty не означает, что пользователь увидит, что вы делаете.
Одним из решений будет использование tty:
[root@server] ~> tty /dev/pts/0 [root@server] ~> echo y | tty not a tty
Но не очень красиво ...