1

Я пытаюсь запустить скрипт Perl, который я написал из командной строки. Код является:

#!/usr/bin/perl
#open file
open(READFILE,"<prune.txt") || die "Couldn't open file";
#read line
while (<READFILE>)
{
#seperate line into pieces
$txtline = $_;
$txtline =~ m/(\d+)\t([\w\s]+)/i;
#rename file
print("Rename $2 to $1.\n");
#loop
}
close (READFILE);

и когда я запускаю его в Терминале, я получаю сообщение об ошибке: #open: bad interpreter: No such file or directory .

2 ответа2

2

Используйте vi, чтобы преобразовать скрипт Perl, скажем, perl_script.pl , в формат файла UNIX (:set ff=unix) следующим образом:

vi perl_script.pl

Теперь в vi измените формат файла на UNIX, сохраните файл и закройте его, как показано в:

:set ff=unix
:wq

Теперь запустите ваш скрипт, как и раньше.

Проблема, скорее всего, в том, что файл был создан или преобразован в какой-то другой формат, отличный от формата UNIX, например, DOS (:set ff=dos в vi).

Похоже, что по крайней мере в моей установке Ubuntu Linux 12.04 LRS старые инструменты, dos2unix и unix2dos не устанавливаются по умолчанию. Это было бы то, что я бы предложил, если бы они были легко доступны - следовательно, вышеупомянутый хак, чтобы вы начали. Так как они в настоящее время недоступны, вот довольно простой способ вернуть их:

$ sudo apt-get install tofrodos
$ sudo ln -s /usr/bin/fromdos /usr/bin/dos2unix
$ sudo ln -s /usr/bin/todos /usr/bin/unix2dos

Теперь, чтобы увидеть, как использовать dos2unix , выполнить man fromdos и увидеть, как использовать unix2dos , выполнить man todos .

Добавьте следующее в один из ваших файлов запуска оболочки, чтобы кодировать ваши собственные dos2unx и unix2dos т.е. ваш файл .bashrc :

dos2unix(){
  tr -d '\r' < "$1" > t
  mv -f t "$1"
}
dos2unix file

unix2dos(){
  sed -i 's/$/\r/' "$1"
}
unix2dos file

Поскольку последнее кодирование было легче выполнить, именно это я и сделал для своего сервера OSX, а не выяснил, какой пакет найти и перенести на OSX.

-1

Вы хотели иметь символ "<" в имени файла? Почти все подобные ошибки связаны с попыткой доступа к файлу с опечаткой в имени.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .