Perl-Sensitive Sunglasses | |
PerlMonks |
Re: Scoping issues with code evaluation asserstions?by pernod (Chaplain) |
on Jun 20, 2003 at 09:48 UTC ( [id://267497]=note: print w/replies, xml ) | Need Help?? |
As mentioned in other posts in this thread, embedded code constructs create closures. Jeffrey Friedl's 'Mastering Regular Expressions' talks about this on page 338 in 'A Warning About Embedded Code and my Variables'. As diotalevi points out, only the instance of the variable seen at compile time is ever used. I tried to force recompilation of the regex by using string interpolation, but this was rejected by the compiler with the message: Eval-group not allowed at runtime, use re 'eval' in regex m/^(a)(?{$placeholder = 1})/ at embed.pl line 12, <DATA> line 1.I tried to use the re 'eval' pragma too, but then the pragma complained about modifying constant items in variable assignments. A solution to your problem could be to use the aliasing properties of @_ (as described in perlsub) instead of explicit return values. This is just another global variable trick, though, but here goes:
This returns 1.1.1., so at least it does what you asked it for. pernod-- Mischief. Mayhem. Soap.
In Section
Seekers of Perl Wisdom
|
|