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