Чтобы определить, является ли perl '#' комментарием или чем-то еще, вы должны скомпилировать perl и построить дерево разбора из-за Фрагмент Шварца
whatever / 25 ; # / ; die "this dies!";
То, является ли '#' комментарием или частью регулярного выражения, зависит от того, является ли независимо () нулевым, что зависит от дерева разбора.
В простых случаях, однако, ваш сбой, потому что (^ # (. * $ \ R) +) повторяет группу захвата, а это не то, что вы хотели.
Но в любом случае, если вы хотите обрабатывать простые случаи, мне даже не нравится регулярное выражение, которое используют все остальные, потому что оно не работает, если есть пробел перед # в строке. Как насчет
^\s*#(.*)$
? Это будет соответствовать любой строке, которая начинается с комментария (необязательно с пробелами, например, для блоков с отступом).