$m = "\\"; # Meta $c = "\#"; # Comment print "Begin: $_\n"; split /\Q$c\E/; $string = $_ = $_[0]; # Because split puts the first non-blank line in $_ for($i = 1; $i <= $#_; $i++) { $_ = $_[$i - 1]; (/((^|[^\Q$m\E])((\Q$m\E){2})*$)/) ? (last) : ($string .= "$c" . $_[$i]); } print " End: $string\n";