"Andrew M. Langmead" wrote: > On Wed, May 31, 2000 at 09:49:05PM +0200, Giorgio Valoti wrote: > > > *but*: until the 'for' is below 4000 iterations, the script finish in 2 > > seconds, more or less; if I repeat the loop 5000 times I have to wait 30 > > secs! > > Am I missing something ( as usual)? > > I'm guessing that the problem is with this part of the code: > > > foreach my $key (keys %database ) { > > print DUMP "$key\n". ("=" x (length($key)+1))."\n"; > > print DUMP "$database{$key}\n\n"; > > } > > > > The foreach loop evaluates its control expression in a list context, > so the keys function will create a (potentially large) temporary list > of all the keys in memory and iterate over the temporary list. > > You might be better of grabbing on key at a time by using the iterator > built into the scalar context version of keys(). > > while(defined(my $key = keys %database) ) { > print DUMP "$key\n". ("=" x (length($key)+1))."\n"; > print DUMP "$database{$key}\n\n"; > } > > -- > Andrew Langmead uhm... I get this error: # Use of uninitialized value. File 'Macintosh HD:Desktop Folder:testDB_file.pl'; Line 33 which is the # print DUMP "$database{$key}\n\n"; # line I'm a newbie am I missing something obvious? bye -- Giorgio Valoti MagneticMedia Network # ===== Want to unsubscribe from this list? # ===== Send mail with body "unsubscribe" to macperl-request@macperl.org