Почему я получаю «use: command not found», когда запускаю свой Perl-скрипт? - PullRequest
5 голосов
/ 25 марта 2010

Я новичок в Perl. И я использовал следующий код из одного форума для подключения к одному из серверов. но выкидывает сообщения об ошибках

[root@Cus]# cat tt.pl
#!/usr/bin/perl
use Net::Telnet;
$telnet = new Net::Telnet ( Timeout=>2, Errmode=>'die');
$telnet->open('10.0.0.28');
$telnet->waitfor('/login:/');
$telnet->print('administrator');
$telnet->waitfor('/Password:/');
$telnet->print('test');
$telnet->waitfor('/switch8-12>/');
$telnet->print('whoamI');
$output=$telnet->waitfor('/switch8-12>/');
print $output;

Но выдает следующие сообщения об ошибках.

[root@Cus]# ./tt.pl
./tt.pl: line 3: use: command not found
./tt.pl: line 4: syntax error near unexpected token `('
./tt.pl: line 4: `$telnet = new Net::Telnet ( Timeout=>2, Errmode=>'die');'

Ответы [ 6 ]

13 голосов
/ 25 марта 2010

Я предполагаю, что вы используете странный вариант Unix, который не учитывает строку #!, и пытается запустить скрипт через оболочку вместо perl.

Другая причина, по которой это может произойти, заключается в том, что tt.pl начинается с пустой строки. #! должно появиться в самом начале файла.

Попробуйте запустить perl tt.pl и посмотрите, что получится.

4 голосов
/ 25 марта 2010

У меня были похожие сообщения об ошибках, и я нашел причину в том, что файл perl использовал неправильную кодировку символов (не спрашивайте меня, почему это имело значение для perl). Perl был установлен правильно, пути были в порядке, синтаксис скрипта был идеальным (я даже получил ошибку «use: command not found» для однострочного скрипта «Hello World!»). Убедитесь, что tt.pl является UTF8 без спецификации.

3 голосов
/ 21 марта 2013

Как сказано в одном комментарии, «похоже, что в начале есть CR».
Если вы здесь безнадежно ...
затем запустите d2u script.pl

d2u -> dos to unix.

1 голос
/ 25 марта 2010

Я не вижу этих строк в верхней части вашего скрипта, которые необходимы для всех модулей и скриптов perl:

use strict;
use warnings;

Вы не сказали, в какой среде это работает - вы используете bash на linux? Какой бы оболочкой вы не пользовались, она не понимает шебанга (#!/usr/bin/perl) и пытается выполнить скрипт на своем языке, а не вызывать Perl для его запуска.

Попробуйте использовать / bin / bash, и тогда ваша строка shebang заработает. Или просто вызовите perl явно: perl tt.pl.

0 голосов
/ 14 августа 2015

У меня была такая же проблема, и я обнаружил, что в #! / Usr / bin / perl не было perl. ни perl -v, ни / usr / bin / perl -v не работали.

Я сделал find / -name для perl, затем добавил символическую ссылку из / usr / bin в реальное местоположение

perl -v -bash: perl: команда не найдена / usr / bin / perl -v -bash: / usr / bin / perl: нет такого файла или каталога

find / -name perl / Opt / МКС / бен / perl5 / Perl / Opt / МКС / бен / Perl

ln -s / opt / ISS / bin / perl / usr / bin / perl perl -v

Это Perl 5, версия 14, Subversion 1 (v5.14.1), созданная для x86_64-linux

Авторские права 1987-2011, Ларри Уолл

Perl может быть скопирован только на условиях Художественной лицензии или Стандартная общественная лицензия GNU, которую можно найти в исходном комплекте Perl 5.

Полная документация по Perl, включая списки часто задаваемых вопросов, должна быть найдена на эта система использует "man perl" или "perldoc perl". Если у вас есть доступ к Интернет, наведите свой браузер на http://www.perl.org/, Домашняя страница Perl.

/ usr / bin / perl -v

Это Perl 5, версия 14, Subversion 1 (v5.14.1), созданная для x86_64-linux

Авторские права 1987-2011, Ларри Уолл

Perl может быть скопирован только на условиях Художественной лицензии или Стандартная общественная лицензия GNU, которую можно найти в исходном комплекте Perl 5.

Полная документация по Perl, включая списки часто задаваемых вопросов, должна быть найдена на эта система использует "man perl" или "perldoc perl". Если у вас есть доступ к Интернет, наведите ваш браузер на http://www.perl.org/, Домашняя страница Perl.

0 голосов
/ 28 января 2014

То же самое происходит, если файл /usr/bin/perl пуст

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