我正在使用新版本的 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
谢谢〜