Я изучаю Perl и написал этот скрипт для практики с использованием STDIN. Когда я запускаю скрипт, он отображает только первый оператор печати на консоли. Независимо от того, что я набираю, включая новые строки, консоль не отображает следующий оператор печати. (. Я использую ActivePerl на машине Windows) Это выглядит следующим образом:Почему STDIN заставляет мою программу Perl замерзать?
$perl script.pl What is the exchange rate? 90.45 [Cursor stays here]
Это мой сценарий:
#!/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";
Одним из возможных решений, я заметил, исследуя моя проблема в том, что я мог бы включать в себя
use IO::Handle;и
flush STDIN; flush STDOUT;в моем сценарии. Однако эти строки не помогли решить мою проблему.
Что делать, если STDIN ведет себя нормально? Если это нормальное поведение, чего мне не хватает?
В UNIX и UNIX-подобной системе конец символа линии является переводом строки, а не возвратом каретки. –
Спасибо! Я понял, что после того, как сделал свой пост, я не использовал скаляр. > _ <Спасибо за указание, как использовать STDIN с массивом! – Kevin
@ Час: Спасибо за исправление. Я отредактировал свой ответ. – CanSpice