On Sat, Jun 14, 2003 at 11:33:17PM +0200, Marcin Kasperski wrote:
> Hmm, probably well known but ... I have not met any direct warning of
> this problem so far.
> 
>      our %SOME_CONFIG = (
>         a => 1,
>         b => 2,
>         c => 3,
>      );      
> 
> ...
>      while (my($k,$v) = each %SOME_CONFIG) {
>          if( ... ) {
>               return; # or last, or throw exception
>          }
>      }
> 
> You probably see the problem - when this code is re-executed (next
> request), the loop iterates just over 'the rest' of the hash.
> 
> Does there exist some way to protect before this problem (some kind of
> auto-destructor, finally, whatever which would automatically rewind
> the hash internal iterator while leaving the context)?

Not really a mod_perl problem, but you can read about the solution in
the docs for each.

    There is a single iterator for each hash, shared by all "each",
    "keys", and "values" function calls in the program; it can be reset
    by reading all the elements from the hash, or by evaluating "keys
    HASH" or "values HASH".

perldoc -f each

-- 
Paul Johnson - [EMAIL PROTECTED]
http://www.pjcj.net

Reply via email to