Tengo un script que capte la entrada estándar:En Perl, ¿cómo determino si hay una entrada estándar presente?
&process_input
sub process_input {
while(<STDIN>) {
$log_data .= $_;
}
}
Cuando ejecuto el script:
myscript.pl -param1=a -param2=b
se queda bloqueado en esta subrutina. Todo funciona bien si lo hago:
echo "" | myscript.pl -param1=a -param2=b
pregunta es ¿cómo puedo determinar si hasta tengo un estándar en lugar de origen? Hubiera pensado que while() devolvería falso y no se ejecutaría, pero supongo que en realidad está esperando que escriba algo en eso porque está 'atascado'.
posible duplicado de [¿Cómo puedo saber si STDIN está conectado a un terminal en Perl?] (Http://stackoverflow.com/questions/528781/how-can-i-tell-if-stdin-is-connected -to-a-terminal-in-perl) – Ether