Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Re^2: the "our" declaration ?!!

by LanX (Saint)
on Jan 20, 2009 at 18:00 UTC ( [id://737631]=note: print w/replies, xml ) Need Help??


in reply to Re: the "our" declaration ?!!
in thread the "our" declaration ?!!

It's kinda like no strict 'vars';, but it only applies to a single variable.

It means "yes, a package variable with that name exists, so don't complain about it."

Thats a common but incomplete interpretation. "our" works also useful without "strict", so it's not about complaining or not.

And there are important differences to no strict 'vars', because the chosen namespace can be very different from what you expect: With our it's the stash of the package at declaration position, like with my where it's the lexpad at declaration position.

But with no strict 'vars' a "non-explicit" variable belongs to the actual package at the encounter position!

Cheers Rolf

UPDATE: So one can't simply refactor a code be replacing no strict 'vars' with a lot of ours for each variablename. You have to take care about the local packages!

Replies are listed 'Best First'.
Re^3: the "our" declaration ?!!
by ikegami (Patriarch) on Jan 20, 2009 at 18:49 UTC

    Thats a common but incomplete interpretation.

    Correct, but only if you allow for poorly scoped variables. As I see things, my explanation is complete except in buggy programs. Put curlies around your packages when you have more than one in your file.

      don't know what you mean, the following code is with curlies but produces different output for the two options.
      use strict; no strict "vars"; # option1 #our $x; # option2 $x="main"; { package other; $x="other"; print $x; } print $x; __END__ 1: othermain 2: otherother

      Cheers Rolf

        ...and don't nest your packages. I thought that went without saying.

        If you do nest your packages to share private variables, you should be using my, not our.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others exploiting the Monastery: (7)
As of 2024-03-28 22:03 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found