[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[ale] perl question



Calvin Harrigan wrote:
> On 1/16/2012 2:45 PM, Geoffrey Myers wrote:
>> Okay, so why is it that $foo is empty inside the sub bar() ??
>>
>>
>> my $bar;
>> my $foo;
>>
>>
>> foreach $foo ("test", "another") {
>>
>>       $bar = $foo;
>>       print "before: bar<$bar>  foo<$foo>\n";
>>       bar();
>> }
>>
>>
>> sub bar
>> {
>>       print "in bar(): bar<$bar>  foo<$foo>\n";
>> }
>>
> 
> 
> Not sure you can use a global as an iterator like that and get the 
> expected result. I think the foreach localizes the scope of the variable 
> $foo.  Instead try:
> 
> my $bar;
> my $foo;
> 
> 
> foreach $i ("test", "another") {
> 
>       $bar = $foo = $i;
>       print "before: bar <$bar> foo <$foo>\n";
>       bar();
> }
> 
> 
> sub bar
> {
>       print "in bar(): bar <$bar> foo <$foo>\n";
> }
> 
> Not a perl programmer by trade so bear with me, just guessing.  You can 
> also try using the topic variable $_ by eliminating the $i all together.

Oh the loop works as defined, it's just that the value is not passed to 
the sub bar()  My expectation was that since the call to bar() was 
inside the loop, that $foo would be accessible within the sub.

> 
> my $bar;
> my $foo;
> 
> 
> foreach $_ ("test", "another") {
> 
>       $bar = $foo = $_;
>       print "before: bar <$bar> foo <$foo>\n";
>       bar();
> }
> 
> 
> sub bar
> {
>       print "in bar(): bar <$bar> foo <$foo>\n";
> }
> 
> 
> 
> _______________________________________________
> Ale mailing list
> Ale at ale.org
> http://mail.ale.org/mailman/listinfo/ale
> See JOBS, ANNOUNCE and SCHOOLS lists at
> http://mail.ale.org/mailman/listinfo


-- 
Until later, Geoffrey

"I predict future happiness for America if they can prevent
the government from wasting the labors of the people under
the pretense of taking care of them."
- Thomas Jefferson