Я использую новую версию жемчуга для запущения некоторого старого скрипта. Это - моя версия жемчуга:
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)
Я Очень сбиваю с толку об этой строке в сценарии, который, просто сохранив ошибку, хотя программа выполнима. Возможно, это - b/c, который сценарий был записан долгое время, и жемчуг внес некоторое изменение синтаксиса? Ниже строка:
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
Кто-либо может помочь мне отладить его?
Это не ошибка Perl. Perl сказал бы:
Can't find string terminator '"' anywhere before EOF
Кажется, что оболочка может произвести подобную ошибку, хотя:
echo 'x="a' | sh
sh: 2: Syntax error: Unterminated quoted string
Как Вы запускаете скрипт? Это содержит строку хижины? Попытайтесь выполнить его с явным perl
:
perl script.pl
Я просто искал историю свой вопрос. С тех пор 5.10.0, жемчуг имеет "Новый определенный - или оператор (//)".
https://en.wikipedia.org/wiki/Perl_5_version_history
Спасибо ~