use strict;
my $str = '// diagGetParameterRaw(transition_1_2_0_Resp, "SecurityClass", buffer, 4096);
// _DiagGenerateKeyFromSeed (buffer, 1, 0x11, "BR120x", "", op1, 6, _length); length = 6;
*******
diagGetParameterRaw(transition_1_2_0_Resp, "SecurityClass", buffer, 4096);
_DiagGenerateKeyFromSeed (buffer, 1, 0x11, "BR120x", "", op1, 6, _length); length = 6;
diagGetParameterRaw(transition_1_2_0_Resp, "SecurityClass", buffer, 4096);
_DiagGenerateKeyFromSeed (buffer, 1, 0x11, "BR120x", "", op1, 6, _length); length = 6;
****************
RawDiagGetParameterRaw(transition_1_0_0_Resp, 16, 64, buffer, 4096);
_DiagGenerateKeyFromSeed (buffer, 8, 0x11, "BR120x", "", op1, 6, _length); length = 6;
';
my $regex = qr/(?P<first>^(?P<intend>\s*?)diagGetParameterRaw.+?(?P<diagresp>\w.+?),.*?\"SecurityClass\", (?P<first_rest>.+?;(?P<newline>[\n\r]+)))(?P<second>(?P<second_start>\s*?_DiagGenerateKeyFromSeed.+.?buffer,).+?(?P<second_rest>0x\d+?,.+))/mip;
my $subst = '\\g<newline>\\g<intend>\\g<newline>//\\g<intend>removed the next two lines as diva uses only one of our three parameters\\g<newline>//\\g<first>//\\g<second>\\g<newline>//\\g<intend>\\g<newline>//\\g<intend>this works correctly:\\g<newline>\\g<intend>\\g<newline>\\g<intend>RawDiagGetParameterRaw ( \\g<diagresp>, 16, 64, \\g<first_rest>\\g<second_start> 8, \\g<second_rest>\\g<newline>\\g<newline>//\\g<intend>replacement ends here\\g<newline>\\g<intend>';
my $result = $str =~ s/$regex/$subst/rg;
print "The result of the substitution is' $result\n";
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Perl, please visit: http://perldoc.perl.org/perlre.html