Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris

Re: Re: 'package' and 'do'

by integral (Hermit)
on Dec 06, 2003 at 21:05 UTC ( #312804=note: print w/replies, xml ) Need Help??

in reply to Re: 'package' and 'do'
in thread 'package' and 'do'

That makes sense, which would imply that the behaviour of __PACKAGE__ is correct, but surely the code would output Point 2: B 6 5 (ie $main::var incremented, not $B::var).

Also perldoc -f do, implies an equivalence to eval `cat`, although it does then say that 'do FILENAME' cannot see lexicals in the enclosing scope. This is one reason why I was using do instead of eval. Is there some way to have this behaviour with eval so that I can get around the scoping of package, but still hide lexical variables?


Replies are listed 'Best First'.
Re^3: 'package' and 'do' (bug)
by tye (Sage) on Dec 07, 2003 at 07:25 UTC

    Quite a while ago I recall a thread in which it was noted that some Perl constructs results in a case where there isn't just a single "current package" (I searched but wasn't able to find it and have run out of time for now).

    There are several different ways in which the "current package" can be felt. What __PACKAGE__ returns, how $x is interpretted (if there is no lexical $x in scope), where sub foo puts the subroutine, etc.

    I think you've discovered this same problem. The outer package should either "leak" in or it should be reset to "main", but some constructs manage to only reset some of the "current package" items (when it should be either "all" or "none", not "some").

    So, I think it is simply a bug in Perl, though a minor one.

                    - tye

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://312804]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (4)
As of 2018-03-23 03:51 GMT
Find Nodes?
    Voting Booth?
    When I think of a mole I think of:

    Results (287 votes). Check out past polls.