Скрипт показывает плохой интерпретатор и не будет работать - PullRequest
2 голосов
/ 19 декабря 2011

Мне отправили Perl-скрипт по почте и попросили запустить его. Я поместил его на свой локальный диск как есть, но когда я попытался запустить скрипт, он показывает мне

/usr/bin/perl^M: bad interpreter: No such file or directory

Я проверил и usrВ / bin / есть perl. Я не уверен, что не так. Я немного проверил и, похоже, мне не хватает некоторых пробелов или чего-то еще .. Я попытался добавить их в конце usr / bin / perl и в концефайла, но это тоже не помогло.Я даже пытался использовать dos2unix

dos2unix oldfile newfile

'dos2unix' не найден. Это на MacOSX.Могу ли я также упомянуть, что я захожу в свой макинтош, используя мой Windows-компьютер дома.

Ответы [ 4 ]

9 голосов
/ 19 декабря 2011

Вы на правильном пути.В конце вашего скрипта есть переводы строки стиля DOS, которые не поддерживаются вашим ядром.

Решение состоит в том, чтобы использовать что-то для преобразования строк перевода DOS в стиль Unix.dos2unix предположительно будет работать, если у вас есть, поэтому используйте что-то еще эквивалентное.

4 голосов
/ 19 декабря 2011

В отсутствие dos2unix вы можете использовать tr (в Mac OS X) для удаления новых строк DOS / Windows:

tr -d '\r' < old.pl > new.pl

Это решит проблему «плохого переводчика».

«Не удается найти Gpu.pm в @INC» - это другая проблема. Либо у вас не установлен Gpu.pm на вашем Mac (или на каком-либо компьютере, на котором вы его запускаете, я запутался в ваших комментариях), либо он не указан в вашем пути включения. Я не знаю, кто этот сценарий или что он делает. Быстрый просмотр http://search.cpan.org/ ничего не показал.

Если вы можете получить этот Perl-модуль (предположительно от того, кто его поставил oldfile), вам нужно убедиться, что он находится в @INC.

3 голосов
/ 19 декабря 2011

Сделайте это в vim:

:%s/^M//g

сохраните файл и попробуйте запустить его снова

execute: vim

когда откроется vim, перейдите в командный режим, нажавescape-ключ .... в командной строке (:) введите: %s/^M//g.Это удалит все символы «^ M» из файла.

2 голосов
/ 19 декабря 2011

dos2unix в Perl:

perl -pi -e 'tr/\r//d' file.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...