我有这个 perl 脚本,它比较两个数组,将它们中的结果返回给我。问题出现了,我相信正则表达式,它在括号 [] 内遇到连字符 (-)。
我收到以下错误:
Invalid [] range "5-3" in regex; marked by <-- HERE in m/>gi|403163623|ref|XP_003323683.2| leucyl-tRNA synthetase [Puccinia graminis f. sp. tritici CRL 75-3 <-- HERE 6-700-3]
MAQSTPSSIQELMDKKQKEATLDMGGNFTKRDDLIRYEKEAQEKWANSNIFQTDSPYIENPELKDLSGEE
LREKYPKFFGTFPYPYMNGSLHLGHAFTISKIEFAVGFERMRGRRALFPVGWHATGMPIKSASDKIIREL
EQFGQDLSKFDSQSNPMIETNEDKSATEPTTASESQDKSKAKKGKIQAKSTGLQYQFQIMESIGVSRTDI
PKFADPQYWLQYFPPIAKNDLNAFGARVDWRRSFITTDINPYYDAFVRWQMNRLKEKGYVKFGERYTIYS
PKDGQPCMDHDRSSGERLGSQEYTCLKMKVLEWGPQAGDLAAKLGGKDVFFV at comparer line 21, <NUC> chunk 168.
我认为只需添加\Q..\E
正则表达式以绕过 [] 即可解决该错误,但这并没有奏效。这是我的代码,提前感谢您提供的任何和所有帮助。
@cyt = <CYT>;
@nuc = <NUC>;
$cyt = join ('',@cyt);
$cyt =~ /\[([^\]]+)\]/g;
@shared = '';
foreach $nuc (@nuc) {
if ($cyt =~ $nuc) {
push @shared, $nuc;
}
}
print @shared;
我试图用这段代码实现的是比较加载到数组@cyt 和@nuc 中的两个不同列表。然后,我将列表中一个元素的 [] 之间的名称与另一个元素的 [] 中的名称进行比较。然后将所有这些发现推送到@shared。希望能澄清一点。