Почему не запускается этот пример из «Learning Perl 6th Edition»? - PullRequest
1 голос
/ 12 сентября 2011

Я застрял в главе 2, упражнение 2, стр. 42 учебного пособия по 6-му изданию.Я скопировал пример кода для проблемы со страницы 296. Я использую Perl версии 5.10.1 в Ubuntu 11.04.Я получаю ошибки, которые не могу понять, может кто-нибудь помочь?Я перечислю код и сообщение об ошибке ниже.

#!/usr/bin/perl -w
$pi = 3.141592654;
print "What is the radius? ";
chomp($radius = <STDIN>);
$circ = 2 * $pi * $radius;
print "The circumference of a circle of radius $radius is $circ.\n";

Я получаю ошибку:

./ex2-2: line 3: =: command not found
Warning: unknown mime-type for "What is the radius? " -- using "application/octet-stream"
Error: no such file "What is the radius? "
./ex2-2: line 5: syntax error near unexpected token `$radius'
./ex2-2: line 5: `chomp($radius = <STDIN>);'

Ответы [ 2 ]

9 голосов
/ 12 сентября 2011

Вы выполняете сценарий Perl, используя вашу оболочку вместо perl. Основываясь на том факте, что номера строк отключены на один, я подозреваю, что причиной проблемы является пустая строка перед строкой Шебанга (#!). #! должно быть первыми двумя байтами файла. Удалить эту пустую строку.

Если это не проблема, возможно, вы выполнили свой сценарий, используя

. ex2-2

или

sh ex2-2

когда вы должны были использовать

perl ex2-2

или

ex2-2       # if "." is in your $PATH

или

./ex2-2

Последние два требуют, чтобы вы выполнили скрипт (chmod u+x ex2-2).

4 голосов
/ 12 сентября 2011

Было бы полезно, если бы вы скопировали и вставили именно то, что вы выполнили.Обратите внимание, что номера строк отличаются в приведенном ниже примере:

$ cat x.pl
#!/usr/bin/perl -w
$pi = 3.141592654;
print "What is the radius? ";
chomp($radius = <STDIN>);
$circ = 2 * $pi * $radius;
print "The circumference of a circle of radius $radius is $circ.\n";
$ sh x.pl
x.pl: line 2: =: command not found
x.pl: line 3: print: command not found
x.pl: line 4: syntax error near unexpected token `$radius'
x.pl: line 4: `chomp($radius = <STDIN>);'
$

Это было с Bash 3.x на MacOS X 10.7.1.

Учитывая этот вывод, я могу с уверенностью диагностировать, чтоваш скрипт запускался как скрипт оболочки, а не как скрипт Perl;bash был использован для запуска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...