Проблема с настройкой Perl

Автор: Slawusik Дата: 10.09.2003 10:27 Добрый день вам!
После инсталляции ASP Linux 7.3 выявилась следующая проблема с запуском perl-программ: если создать файл с программой, присвоить ему права на исполнение, в начале файла вставить #!usr/bin/perl то файл при запуске не выполняется. Выдает ошибку:" Bad interpreter: file not found ", вариант perl myscript.pl срабатывает, скрипт выполняется. Путь /usr/bin/perl является правильным, переустановка Perl не помогла. Возможно, кто-нибудь уже сталкивался с подобной проблемой?
Re: Проблема с настройкой Perl 10.09.2003 11:03Vladimir Dyakov #!usr/bin/perl
заменить на
#!/usr/bin/perl
Re: Проблема с настройкой Perl 10.09.2003 11:10Slawusik Извините пожалуста, это я просто случайно забыл слэш поставить, когда вопрос задавал. На самом деле не работает как со слэшем, так и без.
Re: Проблема с настройкой Perl 10.09.2003 11:23Vladimir Dyakov Дайте вывод команд:
---
$ which perl
$ ls -l /usr/bin/perl
$ ls -l /path/to/myscript.pl
---
Поставьте вместо /path/to/myscript.pl полный путь до с названием вашего скрипта.
Re: Проблема с настройкой Perl 10.09.2003 14:39Slawusik Понял вашу идею.
$ which perl
до переустановки перла он стоял в /usr/bin/perl
теперь в /usr/local/bin/perl.
Естественно, в скрипте это учтено.
Сейчас $ which perl выдает /usr/local/bin/perl
ls -l /usr/local/bin/perl
дает:
-rwxr-xr-x 3 root root 899364 Sep 5 14:44 /usr/local/bin/perl
Права доступа на скрипт полные, то есть всем разрешено все. Права на вышестоящие каталоги я тоже смотрел, нигде запрета на исполнение нет.....

Lля теста я пользую такой скрипт:

#!/usr/local/bin/perl
print "hello";

причем команда:
/usr/local/bin/perl ./myscript.pl выполняется, выдает hello
(скрипт в текущем каталоге)
Все права и пути перепроверены 10 раз... Потому я и обратился на форум, с надеждой что у кого-нибудь уже была подобная проблема. Как мне кажется, проблема скорее в командном интерпретаторе, но я не знаю, как это проверить и настроить. В качестве шелла использую bash 2.05b, переустановка bash не помогла.
Re: Проблема с настройкой Perl 10.09.2003 15:07Vladimir Dyakov Делаем так (просто попробуйте):
---
$ cd /path/to/script
$ chmod +x myscript.pl
$ ./myscript.pl
---
Инересно, вдруг поможет Улыбка

Если не помогает, делаейте
---
$ strace -f -o my.log bash -c ./myscript.pl
---
и читайте my.log Улыбка
Re: Проблема с настройкой Perl 10.09.2003 15:43Slawusik Спасибо. Первую часть совета я выполнил, как я понимаю, это я присвоил право исполнения на скрипт всем. Но так как эти права уже были прописаны, то ситуацию это не изменило, увы.
Второй совет я так же выполнил, и получил лог. Привожу его небольшой кусочек, возможно, это что-то прояснит вам, хотя мне ничего не прояснило...

13765 execve("/usr/local/bin/bash", ["bash", "-c", "./4.pl"], [/* 20 vars */]) = 0
13765 uname({sys="Linux", node="proxy.mydomain.ua", ...}) = 0
13765 brk(0) = 0x80d78a4
13765 open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such file or directory)
13765 open("/etc/ld.so.cache", O_RDONLY) = 5
Re: Проблема с настройкой Perl 10.09.2003 15:51Vladimir Dyakov К вашей ситуации строчка с ENOENT отношения не имеет.
Re: Проблема с настройкой Perl 10.09.2003 16:03Slawusik Лог довольно большой, 9789 байт. К сожалению, никакой информации про какие-либо ошибки я в нем не усмотрел. Могу поместить его тут, хотя и сомневаюсь, что это будет уместно...
Re: Проблема с настройкой Perl 10.09.2003 16:22Vladimir Dyakov Попробуйте так:
---
$ cd /path/to/script
$ dos2unix 4.pl
$ chmod 775 4.pl
$ ./4.pl
---
Re: Проблема с настройкой Perl 10.09.2003 17:28Slawusik Большое спасибо! Заработало! Как я понял, проблема была в том, что я набирал скрипт в виндовс, и Linux некорректно воспринимал знаки переноса строки и другие символы?
Да, все оказалось намного проще, чем я думал. Еще раз благодарю.
Re: Проблема с настройкой Perl 10.09.2003 19:42Ustas 2 Slawusik:
Да, Винда в качестве завершающей строку последовательности использует \r , а в unix'е используется .
Чтобы не возникали проблемы с переносимостью скрипта, и он запускался даже, если perl установлен в кукую-нибудь другую папку, можно, незадумываясь писать:
---
#! /usr/bin/env perl
---

Это же относится и к скриптам, написанным на других скриптовых языках:
---
#! /usr/bin/env python

#! /usr/bin/env php
---
Re: Проблема с настройкой Perl 11.09.2003 11:12Vladimir Dyakov На самом деле это глюк ядра.
RSS-материал