现有字符串:###123a###01#02#03###b321### 需要将a和b这两个字符中间的#替换成! 方法一: #!/usr/bin/perl $str = "###123a###01#02#03###b321###"; $x = "a"; $y = "b"; $source = '#'; $dest = '!'; $index1 = index($str, $x); $index2 = index($str, $y); print $index1 ." ". $index2; substr($str, $index1, $index2 - $index1) =~ s/$source/$dest/g; print $str; 方法二: #!/usr/bin/perl $str = "###123a###01#02#03###b321###"; $x = "3a"; $y = "b3"; $source = '#'; $dest = '!'; $str =~ s/($x|$y)//n$1/g; @array = split //n/, $str; foreach $i (0 .. $#array) { if (($array[$i] =~ /a/) .. ($array[$i] =~ /b/) and $array[$i] !~ /b/) { $array[$i] =~ s/$source/$dest/g; } } $result = join '' ,@array; print $result;