Thanks guys!   I did not think that it was possible, but some Perl guru
might be able to prove me wrong.  I just did not want to pass references
into the subs, as a) I have nested loops, with nested subs   b) Looking for
an easy way to do it.  c) growing my meager Perl skillz.

So I have:

-----------

global hash of hashes of hashes

## iterate throught the hash lists and do stuff...
loop1
    loop2
        loop3
            call sub 1
                which calls sub 2
                    which wants to set the global variable (!!!)  but needs
to know where in loop1, 2 and 3 it is being called from!
------------

If I hafta pass in refs from loop1 2 and 3 all the way down the line, So Be
It.  It just makes my argument list a little unsightly, is all.


"Bob Showalter" <[EMAIL PROTECTED]> wrote in message
2E4528861499D41199D200A0C9B15BC001D7E734@FRISTX">news:2E4528861499D41199D200A0C9B15BC001D7E734@FRISTX...
> Bob Showalter wrote:
> > ...
> > But foreach loops are funny. Try this:
> >
> > use strict;
> >
> > our $x = "Hello";
>
> Aargh! That should be "my". To much confusion in my cutting/pasting.
>
> >
> > printx();
> > for $x (1..3) {
> >    print "$x\n";
> >    printx();
> > }
> > printx();
> >
> > sub printx { print "$x\n"; }
> >
> > prints:
> > Hello
> > Hello
> > Hello
> > Hello
> > Hello
> >
> > Hmm, now try it with "our":
> >
> > use strict;
> >
> > our $x = "Hello";
>
> This "our" is correct.
>
> >
> > printx();
> > for $x (1..3) {
> >    printx();
> > }
> > printx();
> >
> > sub printx { print "$x\n"; }
> >
> > prints:
> > Hello
> > 1
> > 2
> > 3
> > Hello
> >
> > The loop variable can either be a global (default) or a lexical
> > scoped to the loop. It can't reuse a lexical in an outer scope. Also,
> > when a global is used, it is localized to the loop.
> >
> > So, the OP's problem can be addressed by:
> >
> > 1. Using the global variable.
> >
> > 2. Passing the variable to the function.
>



-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to