I tried applying this script to itself. That was to check if significant uses of '#' were handled properly. The results were, uhhh . . . unfortunate.
- It stripped the shebang line, which doesn't look exotic at all.
- It did
-if ( $us eq "ee" ) { $comm = ';'; } else { $comm = '#'; }
+if ( $us eq "ee" ) { $comm = ';'; } else { $comm = '
leaving an unclosed quote in the code.
- It did
- die(&pwarn($comm)) if $topline =~ /\#\!.*perl/i ;
+ die(&pwarn($comm)) if $topline =~ /\
leaving an open regex match.
- It did
- if ( $topline =~ /(\s+)\#\!/ ) {
+ if ( $topline =~ /(\s+)\
to the same effect.
I think your e can only be applied in the simplest circumstances.
Don't feel too bad, the saying goes, "Only perl can parse Perl." To do this sort of thing properly really does require a parser.