Shawn, I ran the exmaple that you provided, and it expected as I had the
predicted based on the knowledge provided by Wiggins and Bob. Thanks to all of
you.
Vishal
Quoting Shawn Corey <[EMAIL PROTECTED]>:
> [EMAIL PROTECTED] wrote:
> > I see. Thanks Shawn. Since we are at it, would you mind explaining a little
> bit
> > about the significance of "our" keyword. I have never understood it
> properly.
> > Most books that I referred to say that it's a "lexically-scoped global
> > variable". What does that mean? I understand global variables to be the
> ones
> > which are accessible to all perl program units (modules, packages or
> scripts).
> > But then, what is so lexically-scoped about it? What do the perl compiler
> and
> > opcode interpreter do when encounter a variable name prefixed by "our"?
>
> Below are three files, main, foo.pm, and bar.pm. These show the way 'my'
> and 'our' behave.
>
> A 'my' global variable is scoped only to the file it is in. It hides any
> 'our' variable (of the same name); you can only access the 'my'
> variable. 'our' variables are global globals; they are the same and
> accessible across files.
>
> Below, you will note that the sub super_bar uses 'our' (in a block) to
> override the 'my' definition of $Self to access the 'our' one. With
> practice, you too can create code that is a nightmare for your maintainers.
>
>
> #!/usr/bin/perl
>
> use strict;
> use warnings;
>
> our $Self = __FILE__;
>
> use foo;
> use bar;
>
> print "main: $Self\n";
> foo();
> bar();
> super_bar();
>
> __END__
>
>
> # foo.pm
>
> our $Self = __FILE__;
> print "foo: $Self\n";
>
> sub foo {
> print "foo: $Self\n";
> }
>
> 1;
> __END__
>
>
> # bar.pm
>
> my $Self = __FILE__;
> print "bar: $Self\n";
>
> sub bar {
> print "bar: $Self\n";
> }
>
> sub super_bar {
> our $Self;
> print "super_bar: $Self\n";
> }
>
> 1;
> __END__
>
>
>
> --
>
> Just my 0.00000002 million dollars worth,
> --- Shawn
>
> "Probability is now one. Any problems that are left are your own."
> SS Heart of Gold, _The Hitchhiker's Guide to the Galaxy_
>
> --
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> <http://learn.perl.org/> <http://learn.perl.org/first-response>
>
>
----------------------------------------
This mail sent through www.mywaterloo.ca
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>