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".
In reply to Re: eval('__PACKAGE__') is always main?!!!
by ikegami
in thread eval('__PACKAGE__') is always main?!!!
by gmpassos
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |