Почему STDIN приводит к зависанию моей программы Perl?

Я изучаю Perl и написал этот сценарий, чтобы практиковаться в использовании STDIN. Когда я запускаю сценарий, он показывает только первый оператор печати на консоли. Независимо от того, что я ввожу, включая новые строки, консоль не показывает следующий оператор печати. (Я использую ActivePerl на машине с Windows.) Это выглядит так:

$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 работал нормально? Если это нормальное поведение, чего мне не хватает?

7
задан brian d foy 14 October 2010 в 21:05
поделиться