my $vb = <<'__EOI__'; let a = test let b = test ' Comment1 let c = """this is a ""test""""" ' Comment2 let d = """this is a ""test""""" __EOI__ foreach (split(/\n/, $vb)) { if (/^(?:[^"]|"(?:[^"]|"")*")*('.*)/) { print("$1\n"); } else { print("No Comment.\n"); } } __END__ Outputs ------- No Comment. ' Comment1 ' Comment2 No Comment.