On Tue, 20 Jun 2006, Paul Gowers wrote:
> I am struggling to get keys to randomize the order that it returns
> the key list between successive runs. My understanding was that in
> 5.8.1 and later, successive calls to keys would give the hash keys in
> different order, but I cannot get this to work. My test case is:
> 
> #!/usr/bin/perl
> 
> @h{1..1000} = (1..1000);
> 
> @arr1 = keys %h;
> @arr2 = keys %h;
> 
> print "Testing...\n";
> print "array1 is ", scalar(@arr1), " elements; array2 is ", scalar (@arr2), " 
> elements\n"; print
> "Testing...\n";
> 
> foreach (@arr1)
> {
> print "different" if $_ ne $arr2[$i++];
> }
> print "end test\n";
> 
> 
> I have checked the Perl build (5.8.7 on Mandriva Linux) and it has not
> been compiled with NO_HASH_SEED. In fact perl -V reports nothing with
> hash in the compile flags. When I run with env var
> PERL_HASH_SEED_DEBUG=1 I see the different seed values being used each
> run, so some form of randomization is being used. However, the order
> that keys returns is stubbornly the same each time. I tried making the
> hash bigger (1000 entries) in case my small example was causing it,
> but to no avail.

The keys will be different in different *runs* of the program, but
Within a single execution they need to remain constant.  Otherwise
You could never lookup the values in your hashes if the keys changed
All the time. :)

Cheers,
-Jan


_______________________________________________
ActivePerl mailing list
[email protected]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs

Reply via email to