未终止的引号字符串 (Perl)

未终止的引号字符串 (Perl)

我正在使用新版本的 perl 来运行一些旧脚本。这是我的 perl 版本:

This is perl 5, version 26, subversion 1 (v5.26.1) built for x86_64-linux-gnu-thread-multi (with 67 registered patches, see perl -V for more detail)

我对脚本中的这一行感到非常困惑,尽管程序可以运行,但始终出现错误。也许是因为脚本编写了很长时间,并且 perl 做了一些语法更改?下面是这一行:

use warnings;
use strict;
if($#ARGV != 0||$ARGV[0] eq "--help"){ print STDERR "Split bed file into one file per chromosome (keeping and adjusting the header)\n\nUsage: split_bed <BED file>"; }

错误信息是:

 1: Syntax error: Unterminated quoted string --hel_  N     N'th byte, character or field, counted from 1p

有人能帮我调试一下吗?

答案1

这不是 Perl 错误。Perl 会说:

Can't find string terminator '"' anywhere before EOF

但是,看起来 shell 也会产生类似的错误:

echo 'x="a' | sh
sh: 2: Syntax error: Unterminated quoted string

你如何运行该脚本?它包含 shebang 行吗?尝试使用显式命令运行它perl

 perl script.pl

答案2

我刚刚搜索了历史记录以查找我的问题。从 5.10.0 开始,perl 有了“新的定义或运算符 (//)”。

https://en.wikipedia.org/wiki/Perl_5_version_history

谢谢〜

相关内容