http://qs1969.pair.com?node_id=121498


in reply to Obscure

It's a bit hard to follow what you're code is doing here. Did you run it through obscure.pl before you posted? I ask because it's difficult to follow with all your short variable names.

However, I am assuming that you didn't run the code through obscure.pl before posting. Because if you had, it wouldn't compile.

An oft heard comment in the perl community is "Only perl can parse Perl". Your code will break a lot of scripts (and it does indeed break your own). The bit where you strip comments beginning with '##' will break a regex like $foo =~ s#bar## and a string like my $foo = ' bar ## more things here '; and a lot of other legitimate perl code. Removing comments is difficult in perl without breaking things.

Your best bet if you want to do something like this is to use one of the Filter::* modules. Take a look at Filter::Simple which is designed to make writing source filters easy.

Simon Flack ($code or die)
$,=reverse'"ro_';s,$,\$,;s,$,lc ref sub{},e;$,
=~y'_"' ';eval"die";print $_,lc substr$@,0,3;