use strict;
my $str = 'CALL agr_agreement(
1,
13075,
\'HBO Latin America--this is a test\',
\'(123) 456-7890\',
\'M\',
\'John Doe\',
\'john@doecom\',
\'Miami\',
\'(123) 456-7890\',
\'Net 30\',
\'Quarterly\',
0,
\'2014-09-01\',
\'2014-09-01\', /*
This is a multi\'\'-line comment
*/
\'2017-08-31\', -- single line comment
36,
/*Inline, but multi-line comment*/\'2015-03-26 06:59:44\',
@status
);';
my $regex = qr/'[^']*(?!\\)'(*SKIP)(*F) # Make sure we're not matching inside of quotes
|(?m-s:\s*(?:\-{2}|\#)[^\n]*$) # Single line comment
|(?:
\/\*.*?\*\/ # Multi-line comment
(?(?=(?m-s:[\t ]+$)) # Get trailing whitespace if any exists and only if it's the rest of the line
[\t ]+
)
)/xsp;
my $subst = '';
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