[Phoenix-pm] Eval Namespace Question
Douglas E. Miles
perlguy at earthlink.net
Mon Aug 7 14:09:51 PDT 2006
Here's a question mark: ? Feel free to put it after the sentence "Does
anyone...". D'oh!
Douglas E. Miles wrote:
>Hey all!
>
>I'm having fun hacking Perl for a change, and I just realized I'd been
>using a feature that I don't completely understand. man perlfunc says
>this about eval:
>
>In the first form, the return value of EXPR is parsed and exe-
>cuted as if it were a little Perl program. The value of the
>expression (which is itself determined within scalar context)
>is first parsed, and if there weren't any errors, executed in
>the lexical context of the current Perl program, so that any
>variable settings or subroutine and format definitions remain
>afterwards.
>
>This means that in my code below, that $bar is in scope within the
>eval. What blows me away is that $foo::foo is also in scope because of
>the "package foo" statement in $eval_string. Does anyone know how perl
>accesses both namespaces simultaneously without specifying the namespace
>in each variable name. Feel free to laugh at me if I'm missing
>something basic. :) The cool thing is that this behavior is exactly
>what I need. I'd just like to understand how it works (and hope that it
>isn't a misfeature that might be removed in the future). Thanks!
>
>
>#!/usr/bin/perl
>
>package foo;
>
>$foo = "FOO!";
>
>package bar;
>
>my $bar = "BAR!";
>
>my $perl_code = 'print "$bar $foo\n"';
>print "$perl_code\n";
>
>my $eval_string = "package foo;\n$perl_code";
>eval $eval_string;
>
>_______________________________________________
>Phoenix-pm mailing list
>Phoenix-pm at pm.org
>http://mail.pm.org/mailman/listinfo/phoenix-pm
>
>
More information about the Phoenix-pm
mailing list