Mac 上的 Perl 评论

Mac 上的 Perl 评论

我正在尝试从命令行运行我编写的 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

答案1

使用 vi 将 Perl 脚本(比如perl_script.pl)转换为 UNIX 文件格式 ( :set ff=unix),如下所示:

vi perl_script.pl

现在在 中vi,将文件格式更改为 UNIX,保存文件,然后退出,如下所示:

:set ff=unix
:wq

现在像以前一样运行您的脚本。

问题很可能在于该文件被创建或转换为 UNIX 格式以外的其他格式,也许是 DOS(:set ff=dosvi)。

至少在我的 Ubuntu Linux 12.04 LRS 安装中,旧的工具dos2unixunix2dos似乎并未默认安装。如果它们随时可用,我就会建议这样做 - 因此上述技巧可以帮助您入门。由于它们目前不可用,因此这里有一个非常简单的方法来恢复它们:

$ 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

将以下内容添加到您的一个 shell 启动文件中,以编写您自己的代码dos2unxunix2dos即您的.bashrc文件:

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

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

因为后者编码更容易,所以我为我的 OSX 服务器做了这件事,而不是弄清楚要找到哪个包并移植到 OSX。

答案2

您是否想在文件名中添加“<”字符?几乎所有此类错误都与尝试访问名称中有拼写错误的文件有关。

相关内容