$line =~ s/(pattern1)((?!pattern1).)+pattern2.+?\1/substitute/gs;