use strict; my $comment = qr/(?:--.*?\n)/ ; my $literal_ch = qr/(?:\'\'|[^\'])/ ; my $ch_str_literal = qr/(?:\'(?>$literal_ch*)\')/ ; my $other_ch = qr/[^\';]/ ; my $some_str = qr/(?:$comment|$ch_str_literal|$other_ch)/ ; my $statement = qr/(?:$some_str*;)/ ; my $text = ''; while (<>){ $text .= $_; while ( $text =~ s/^$statement// ){ print("Found:$&\n") }}