在使用过程中,遇到一个问题,用Perl的正则表达式无法解决,其正则匹配虽然异常强大,不过好像没有发现满足我需要的replace函数,在实际情况中,我已经把需要替换的15位数据生成好了,只要在特定的文档中的特定的位置,如在需要行中的第15-20的位置把文本替换掉,正则无法做这个,只能手写了一个函数,通过Perl最基本的substr实现此功能:
sub replace(){
my ($line,$exp,$beg,$end)=@_;
$len=rindex $line."/$", "/$"; #计算Line长度
my $line_left=substr($line,0,$beg);
my $line_right=substr($line,$end,$len);
my $newline=$line_left.$exp.$line_right;
}
整个非常简单,line就是原始字符串,exp就是要替换进去的字符串,beg和end是要将原始字符串替换的位置。