To:                     [EMAIL PROTECTED]
From:                   "Lance" <[EMAIL PROTECTED]>
Subject:                inner variable access
Date sent:              Tue, 11 Feb 2003 17:49:25 -0000

> Is there a way to access the 'foreach' variable from a subprocedure
> called from inside the loop whose variable you want to access? 
> Hooboy, even I don't understand that question! ;-)

Depends on whether you use a lexical variable.
If you do (and you SHOULD) then only if you pass it to the function.

>  An example is
> neccessary, I believe:
> 
>            foreach my $store( values %$server ){
>                 if( $$store{errorPageCount} >=1 ){

        $store->{errorPageCount}
looks much better.

> ## loop through each page to check in each store
>                     foreach my $page( values %$store ){
>                         $$server{emailMessage} .= "$$page{error}";

Do not enclose variables in quotes unless you really have to.

                $server->{emailMessage} .= $page->{error};


>                     }
>                 }
>                 if( $$store{badMailSent} ne 'sent' ){
>                     mailIt( $$store{emailMessage}, "$$store{name} is
> non-responsive", 'bad', $$store{email});

mailIt( $store->{emailMessage}, "$store->{name} is non-responsive", 
        'bad', $store->{email}, $store, $server);

>                 }
>             }
> 
> Now, from within my mailIt sub, can I access $$store or $$server?  I
> get the error message: "Global symbol "$store" requires explicit
> package name at D:\My Stuff\lance\perl\store_monitor\store_monitor.pl
> line 603."
> 
> inside of mailIt, I am trying to access a variable in %server using:
> $$server{errorPageCount}++;

There is no variable %server in your code. You have a SCALAR variable 
$server that contains a reference to a HASH. So the hash is %$server. 
And the elements of the hash are either $$server{key} or $server-
>{key}.

Jenda
===== [EMAIL PROTECTED] === http://Jenda.Krynicky.cz =====
When it comes to wine, women and song, wizards are allowed 
to get drunk and croon as much as they like.
        -- Terry Pratchett in Sourcery


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

Reply via email to