早上好,伙计们,
我有以下代码:
$line =~ s/gene_id "([A-Za-z0-9:\-._]*_[oO])([_.])[0-9]*";/gene_id "$1$21";/g;
我遇到1美元和2美元的问题。我希望输出为$1$21
,换句话说,$1
和$2
以及1
。但是,Perl会看到$21
而不是$2
和1
。我该如何避免这个问题?
感谢。
答案 0 :(得分:3)
在变量标识符周围使用大括号将其与周围文本${2}
$line =~ s/gene_id "([A-Za-z0-9:\-._]*_[oO])([_.])[0-9]*";/gene_id "$1${2}1";/g;
此外,由于您将所有其他文字保持不变,因此您只需使用\K
来修改其后的内容即可。更不用说使用\w
来减少你的第一个角色类:
$line =~ s/gene_id "[\w:\-.]*_[oO][_.]\K[0-9]*";/1";/g;