2011-12-19 115 views
2

我用郵件發送一個Perl腳本,並要求運行它。我把它放在我的本地驅動器上是,但是當我試圖運行該腳本,它顯示我腳本顯示不良解釋,並不會運行

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

我檢查和usr/bin /確實有perl在那裏。我不知道什麼是錯。我檢查了一下,看起來像我缺少一些空間或東西..我試圖在 年底添加這些usr/bin/perl,並在文件的末尾,但這也沒有幫助。 我甚至嘗試使用DOS2UNIX的

dos2unix oldfile newfile 

'DOS2UNIX的' 不found.This是MacOSX上。 我可能還提到我在家中使用我的Windows機器進入我的Mac。

回答

4

在沒有dos2unix,您可以使用tr(在Mac OS X),以剝離DOS/Windows的新線:

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

這將解決 「不好解釋」 的問題。

「在@INC中找不到Gpu.pm」是一個不同的問題。要麼你沒有在你的Mac上安裝Gpu.pm(或者你正在運行這臺計算機的任何一臺計算機,我對你的評論感到困惑),或者它不在你的包含路徑中。我不知道那個腳本是什麼或者它做了什麼。快速瀏覽http://search.cpan.org/什麼也沒有透露。

如果你可以得到這個Perl模塊(大概來自誰提供oldfile),你必須確保它在@INC

+0

想這太失敗了。它也說在@INC – Manish 2011-12-19 02:42:36

+0

這是一個不同的問題無法找到Gpu.pm。您錯過了一個名爲「Gpu.pm」的Perl模塊。我不知道那是什麼或它做了什麼,對不起。 – Johnsyweb 2011-12-19 02:51:53

+0

現在你的問題是你的系統上沒有下面的perl模塊「Gpu.pm」。您需要使用cpan下載它 – ennuikiller 2011-12-19 02:55:28

3

在vim這樣做:

:%s/^M//g 

保存文件,然後再試一次

運行它執行:VIM

如果Vim打開去通過按Esc鍵命令模式...在命令提示符處(:)鍵入:%s/^M//g。這將從文件中刪除所有「^ M」字符。

+0

你能多解釋一下嗎?我在哪裏添加這個? – Manish 2011-12-19 02:41:33

+0

好的我在文件上試了一下。它說沒有找到模式^ M – Manish 2011-12-19 02:49:38

+0

還是看不到thingy的模式。只是爲了確保在%s/^ M //右上方沒有任何空間 – Manish 2011-12-19 02:55:07

9

你在正確的軌道上。你的腳本最後有DOS風格的換行符,這是你的內核不支持的。

解決方案是使用某些東西將DOS換行符轉換爲Unix樣式。 dos2unix大概會工作,如果你有它,所以使用其他等效的東西。

+0

你能告訴我在哪裏得到dos2unix嗎?我的意思是我從sourgeforge下載它,然後解壓縮並複製dos2unix.exe來說dos2unix.exe oldfile newfile。它說-bash:./dos2unix.exe:無法執行二進制文件 – Manish 2011-12-19 02:43:42

+3

您已將Windows可執行文件下載到Mac並且它沒有工作? – Johnsyweb 2011-12-19 02:56:26

+0

好吧我去C:\ Documents and Settings \ User \ My Documents \ Downloads \ dos2unix-5.3.1-win32 \ bin並且說dos2unix oldfile newfile。它說新文件沒有這樣的文件或目錄。我期望命令做新文件..好嗎? – Manish 2011-12-19 03:03:24

2

DOS2UNIX的在Perl:

perl -pi -e 'tr/\r//d' file.txt