脚本显示错误的解释器,不会运行

时间:2011-12-19 02:26:11

标签: perl

我通过邮件发送了一个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机器进入我的mac。

4 个答案:

答案 0 :(得分:9)

你走在正确的轨道上。您的脚本最后有DOS样式换行符,内核不支持。

解决方案是使用一些东西将DOS换行符转换为Unix样式。如果你拥有它,dos2unix可能会起作用,所以请使用其他等效物。

答案 1 :(得分: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

答案 2 :(得分:3)

在vim中执行此操作:

:%s/^M//g

保存文件并尝试再次运行

执行:vim

当vim打开时,通过在命令提示符(:)键入%s/^M//g处按下转义键....进入命令模式。这将从文件中删除所有“^ M”字符。

答案 3 :(得分:2)

Perl中的

dos2unix:

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