Почему мой сценарий Perl хорошо работает в Windows, но не в Ubuntu?

Мой сценарий Perl хорошо работает в командной строке Windows; но, я не мог выполнить его в Ubuntu. Я попробовал простым сценарием Perl, но он дает мне сообщение об ошибке:

can't open perl script "testl.pl" inpute/output error.

Вот сценарий, я раньше тестировал и сохранял его как test.pl:

#!/usr/bin/perl
print "content-type: text/html \n\n";
print "hello worrld\n";

Кто-либо может помочь мне зафиксировать это?

0
задан 18 October 2016 в 08:34

1 ответ

Вы запустили скрипт test.pl, но Вы не выполняли тот, который Вы отправили. Вы, по-видимому, запустили скрипт, который находится в Вашем ПУТИ, в то время как сценарий, который Вы отправили, не находится в Вашем ПУТИ.

Нет ничего в сценарии, который Вы отправили, который произведет вывод, который Вы отправили в своем вопросе.

Сценарий, который Вы отправили, хорошо работает в Ubuntu. Это вещи, которые необходимо гарантировать при запущении скрипта в Ubuntu.

Запущение скриптов в Linux

Можно назвать сценарий с помощью названия интерпретатора. В этом случае:

$ perl test.pl
$ perl /home/user/test.pl

Это запустит скрипт, который является или в настоящее время в том же каталоге, где команда является вызовом или найденный в переменной Пути. Этот метод не будет искать PATH переменная. Если сценарий не расположен в текущей папке, необходимо дать полный путь для сценария, который будет выполняться.

Сценарий не должен иметь хижины (#!/usr/bin/perl) заголовок.

Установка выполнить бит

Можно установить исполнительный бит с:

$ chmod +x test.pl

В сочетании с выполнить набором битов этому также будет нужен заголовок хижины. Если должностное лицо укусило, установлен, сценарий может назвать он - имя файла. Это только запустит скрипт, который найден в PATH переменная. Первый, расположенный порядком в ПУТИ, будет выполняться. В отличие от Windows, который Вы сказали что работы, по умолчанию (и из соображений безопасности) текущий каталог . не находится в пути пользователя и не будет искаться. Можно проверить переменную пути путем выполнения:

 $ echo $PATH

Сценарий выполнится, если он будет расположен в одном из них (среди других) местоположения поиска пути по умолчанию:

~/bin
/usr/local/bin

Если сценарий не находится в каталоге переменной ПУТИ, необходимо указать полный путь для выполнения его:

$ ./test.pl
$ /home/userid/test.pl

Идентификация, какой сценарий располагается

Можно проверить местоположение скрипта, который запускается с этой командой:

$ type test.pl

Это покажет Вам полный путь первого test.pl сценарий расположен. Если существует несколько сценариев в различных ПУТЯХ, можно отобразить всех их с этой командой:

$ type -a test.pl

В этом случае, если бы существует несколько сценариев тем же именем, называние сценария полным путем было бы лучшим методом. Сценарий таким общим названием как test.pl должен всегда называться полным путем, чтобы гарантировать, что корректный выполняется.

2
ответ дан 28 September 2019 в 09:24

Другие вопросы по тегам:

Похожие вопросы: