Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical

Re: Re: $_ scoping issues

by pemungkah (Priest)
on Jul 15, 2003 at 16:18 UTC ( #274463=note: print w/replies, xml ) Need Help??

in reply to Re: $_ scoping issues
in thread $_ scoping issues

All very correct. To specifically state it: $_ is a global variable, and is shared between all packages.

This means that if you use it, you should use local() to be polite to your callers, and you should be careful to insulate yourself from code that may alter it.

This can be a difficult proposition if you didn't write the code yourself (and sometimes even if you did!). Generally, you have to look at each appllication of $_ and judge on a case-by-case basis whether someone else may be modifying it while you're using it.

Your best protection is to get into the habit of always localizing it yourself, so as not to step on someone else's toes, and to not trust that code you call has always been so polite.

Replies are listed 'Best First'.
Re: Re: Re: $_ scoping issues
by tilly (Archbishop) on Jul 16, 2003 at 01:42 UTC
    To more precisely state it, no matter what package has been declared, $_ means $main::_.

    As an amusing side effect, the declaration our $_; will (if you are in any package other than main) cause your explicit references to $_ to not be the $_ that you expect...

Re: Re: Re: $_ scoping issues
by swkronenfeld (Hermit) on Jul 15, 2003 at 17:27 UTC
    thanks guys, these are the kind of things that a former C programmer needs to learn about programming in perl =)

    these forums are terrific, I've learned a lot over the last day browsing through the nodes. What a helpful community!

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://274463]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (1)
As of 2023-03-30 22:04 GMT
Find Nodes?
    Voting Booth?
    Which type of climate do you prefer to live in?

    Results (74 votes). Check out past polls.