receive - ¿Cómo puedo saber si STDIN está conectado a un terminal en Perl?
perl script arguments (3)
También podría estar interesado en IO :: Interactive para descubrir si Perl cree que está interactuando con un usuario. Simplemente estar conectado a un tty no significa que el usuario va a ver lo que haces.
¿Cómo puedo saber si STDIN está conectado a un terminal en Perl?
Una solución sería usar tty:
[root@server] ~> tty
/dev/pts/0
[root@server] ~> echo y | tty
not a tty
Pero no es muy bonito ...
if (-t STDIN) {
# stdin is connected
} else {
# stdin is not connected
}
Usualmente uso esto junto con -t STDOUT, para averiguar si estoy ejecutando desde un shell interactivo, o desde cron, para habilitar más resultados.