Пользовательский ввод в perl - проблема с запуском скрипта в KomodoEdit
Я написал этот крошечный код на gedit и запустил его:
#/usr/bin/perl
print "Enter the radius of circle: \n";
$radius = <>;
chomp $radius;
print "radius is: $radius\n";
$circumference = (2*3.141592654) * $radius;
print "Circumference of circle with radius : $radius = $circumference\n";
Работает нормально, используя командную строку. Дайте тот же код на Komodo Edit: столкнувшись с проблемой, я ожидаю, что первая строка будет выводиться как:- Введите радиус круга: где он ждет на экране, то есть ждет ввода и после этого выполняет все в последовательности - может кто-нибудь сказать мне, почему он работает нормально с командной строкой, но не Komodo?
вывод после изменения #/usr/bin/perl на #!/usr/bin/perl:- также нужно было объявить мой $ радиус и мою $ окружность ------------------ ----------------------------------------
12 # same i had to enter 12
Enter the radius of circle:
radius is: 12
Circumference of circle with radius : 12 = 75.398223696
2 ответа
Хотя "использовать строгий" и правильно написанная линия Шебанга - это всегда хорошие вещи, но и не является настоящей причиной. Когда вы запускаете интерактивную программу в среде без командной строки, вам обычно следует отключить буферизацию ввода-вывода. В Perl вы должны поместить эту строку вверху вашего кода:
$| = 1;
Я проверил ваш скрипт, используя Komodo edit, и он отлично работает, за исключением нескольких исправлений.
#!/usr/bin/perl -w
use strict;
print "Enter the radius of circle: \n";
my $radius = <>;
chomp $radius;
print "radius is: $radius\n";
my $circumference = (2*3.141592654) * $radius;
print "Circumference of circle with radius : $radius = $circumference\n";
Выход в Комодо
Enter the radius of circle:
5
radius is: 5
Circumference of circle with radius : 5 = 31.41592654