Пользовательский ввод в 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
Другие вопросы по тегам