in reply to eval('__PACKAGE__') is always main?!!!
The docs say "In the first form," eval EXPR, "the return value of EXPR is parsed and executed as if it were a little Perl program."
Perl programs are put into main until a package statement is encountered, so the documentation is consistent with the behaviour (although an explicit statement about this behaviour would be favourable).
Which means the following is wrong?
sub moo { print("moooooain\n"); } package cow; sub moo { print("moooOoooOOoooo\n"); } # <--- prints this eval 'moo();';
There's definitely a bug, since __PACKAGE__ does not agree with the function getting called.
do EXPR is consistent with eval EXPR, as stated in do's docs:
> echo "print(__PACKAGE__, $/);" > script.pl > perl -e "package foo; do 'script.pl';" main
Of course, eval EXPR is inconsistent with eval BLOCK which "parsed--and executed within the context of the current Perl program".
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: eval('__PACKAGE__') is always main?!!!
by gaal (Parson) on Dec 24, 2004 at 07:01 UTC |
In Section
Seekers of Perl Wisdom