Используйте 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.