Estoy aprendiendo Perl y escribí este script para practicar usando STDIN. Cuando ejecuto el script, solo muestra la primera declaración de impresión en la consola. No importa lo que escriba, incluidas las nuevas líneas, la consola no muestra la siguiente declaración de impresión. (. Estoy usando ActivePerl en una máquina Windows) Parece que este:¿Por qué STDIN causa que se congele mi programa Perl?
$perl script.pl What is the exchange rate? 90.45 [Cursor stays here]
Esta es mi guión:
#!/user/bin/perl
use warnings; use strict;
print "What is the exchange rate? ";
my @exchangeRate = <STDIN>;
chomp(@exchangeRate);
print "What is the value you would like to convert? ";
chomp(my @otherCurrency = <STDIN>);
my @result = @otherCurrency/@exchangeRate;
print "The result is @{result}.\n";
Una posible solución Noté mientras investigaba mi problema es que pude incluir
use IO::Handle;y
flush STDIN; flush STDOUT;en mi secuencia de comandos. Sin embargo, estas líneas no resolvieron mi problema.
¿Qué debo hacer para que STDIN se comporte normalmente? Si esto es comportamiento normal, ¿qué me estoy perdiendo?
En sistemas UNIX y UNIX, el carácter de fin de línea es avance de línea, no retorno de carro. –
¡Gracias! Me di cuenta de que no estaba usando un escalar después de hacer mi publicación. > _ <¡Gracias por señalar cómo usar STDIN con una matriz! – Kevin
@Chas: gracias por la corrección. He editado mi respuesta. – CanSpice