in reply to Deparse broken or just misunderstood?
You get a feather in your obfuscated code contest cap when you are able to write code that doesn't work when deparsed. Yes, it's possible to foil deparse. Why? Only perl itself can parse Perl.
In the case of your example, how would you want deparse to deparse that construct? Something more like this?:
my $d = 'Shakespeare is the food'; foreach ( $d ) { s/food/bard/; }
The problem is that of lexical scoping, and that of deparse trying its damndest to refrain from using 'for' as a modifier. I would say that at best your nifty trick is just a trick worthy of use in obfu, but not in mainstream code. I believe that the behavior allowing it to work in the case of the 'for' modifier is not defined, and thus may change in future Perl refinements. It's certanly not discussed directly in perlsyn, though perlsyn does mention that using my() on the left hand side of a conditional modifier yields undefined behavior.
Dave
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Deparse broken or just misunderstood?
by Roy Johnson (Monsignor) on Nov 15, 2004 at 17:56 UTC |