On Mon, 31 Jan 2005 13:40:01 -0800, Graeme St. Clair
<[EMAIL PROTECTED]> wrote:
> Combo ActiveState Perl 5.6.1 635 and Apache 1.0.xx from www.perl.apache.org
> <http://www.perl.apache.org> .
>
> The following code goes round the foreach twice as often as I think it
> should. (I realise the code is probably not particularly stylish, but I'd
> prefer to leave that alone for the moment.)
[cut]
> my $counter = 0;
> foreach $capval ( sort bynumber %capdef ) {
> $counter++; # debug
> if (defined $capdef{$capval}) { # debug
> print STDERR $counter . " " . $capval . " " . Dumper($capdef{$capval}) .
> "\n"; # <-- print 2
> my @elcdev = split(/;/, $capdef{$capval}{'ELIGELC'});
> my @tlcdev = split(/;/, $capdef{$capval}{'ELIGTLC'});
> # Useful stuff originally went here.
> } else { # debug
> print STDERR "Haha!" . $counter . "\n"; <-- print 3 debug
> } # debug
> }
>
> exit 0;
[cut]
> 'print 2' shows 171 items as expected.
>
> And then --- I get Haha!172 thru Haha!342 from 'print 3'.
>
> What is going on that I haven't understood?
>
> Rgds, GStC.
Graeme,
I think you're looking for:
foreach $capval ( sort bynumber( keys %capdef) ) {
I forget what exactly 'sort %hash' (as opposed to 'sort keys %hash')
does, but not what you want.
HTH.
--jay
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>