As
davido said,
our variables create an entry in the packages symbol tables in which they are declared, while a
my variable doesn't. A
my variable hides an existing (package) global from that point on to the rest of the variable's scope. That scope is always within the same file and can be delimited with blocks.
$ourVAR = "123 ABC";
{
my $ourVAR = "456 RST";
print "my packAA ourVAR = $ourVAR \n";
}
print "our packAA ourVAR = $ourVAR \n";
__END__
my packAA ourVAR = 456 RST
our packAA ourVAR = 123 ABC
In your example, you don't delimit the scope for the my version of $ourVAR, so it's valid unto the rest of the file.
our variables are shared variables in two ways: they are visible to code
- of different packages in the same file
package Foo;
our $foo = 'bar';
package main;
print $foo,"\n"; # bar
- in different files belonging to the same package
# file foo.pl
use strict;
our $shared = "one fish";
# file bar.pl
use strict;
our $shared =~ s/e f/e half f/;
#/usr/bin/perl
use strict;
our $shared;
require "foo.pl";
require "bar.pl";
print $shared,"\n";
__END__
one half fish
They behave just like they are qualified - with my, and our.
--shmem
_($_=" "x(1<<5)."?\n".q·/)Oo. G°\ /
/\_¯/(q /
---------------------------- \__(m.====·.(_("always off the crowd"))."·
");sub _{s./.($e="'Itrs `mnsgdq Gdbj O`qkdq")=~y/"-y/#-z/;$e.e && print}
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.