Como posso saber se STDIN está conectado a um terminal em Perl?
Pergunta
Como posso saber se STDIN está conectado a um terminal em Perl?
Solução
if (-t STDIN) {
# stdin is connected
} else {
# stdin is not connected
}
Eu costumo usar isso em conjunto com STDOUT -t, para descobrir se eu estou correndo de um shell interativo, ou a partir de cron, para permitir uma maior produção.
Outras dicas
Você pode também estar interessado em IO :: Interativo para descobrir se Perl pensa que está a interagir com um utilizador. Basta estar conectado a um tty não significa que o usuário está indo para ver o que você faz.
Uma solução seria a utilização tty:
[root@server] ~> tty
/dev/pts/0
[root@server] ~> echo y | tty
not a tty
Mas não muito bonito ...
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow