use strict; use warnings; use List::Util q{first}; my $patt1 = q{ABC}; my $patt2 = q{XYZ}; my $replace = q{999999}; my $string = < $patt2Posn } @patt1Posns or next; push @substituteSets, [ $start, $end - $start + length $patt1 ]; } for my $raSubstituteSet ( reverse @substituteSets ) { substr $string, $raSubstituteSet->[ 0 ], $raSubstituteSet->[ 1 ], $replace; } print $string, q{-} x 25, qq{\n}; #### kjdfjdfXYZewfkfABClkjfef sahasjABCsjhksfhABCsjsjfs oreweouABCkerjeXYZewfkfABClkjfef xcvmvbbbvABCdjfABCjsdjfsdf jjnnjfABDjfXYZdjdjABCjfdkjfABClsfj isosiXYZcsfsjfABChfdhgfABCyeryerXYZffjfs ------------------------- kjdfjdfXYZewfkfABClkjfef sahasjABCsjhksfhABCsjsjfs oreweou999999lkjfef xcvmvbbbvABCdjf999999jfdkjf999999hfdhgfABCyeryerXYZffjfs -------------------------