我通过邮件发送了一个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。
答案 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)
dos2unix:
perl -pi -e 'tr/\r//d' file.txt