Do you want a lexical sort or a numeric sort?

foreach my $key ( sort keys %freq ) # lexical
foreach my $key ( sort ($a<=>$b) keys %freq ) # numeric

- Roger -

----- Original Message -----
From: "Balint, Jess" <[EMAIL PROTECTED]>
To: "'Roger C Haslock'" <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]>
Sent: Thursday, January 31, 2002 9:37 PM
Subject: RE: More Economic Use of Hash


> Thanks. Works great. Any ideas how I might sort the output hash for output
> to a file in key order?
>
> -----Original Message-----
> From: Roger C Haslock [mailto:[EMAIL PROTECTED]]
> Sent: Thursday, January 31, 2002 2:23 PM
> To: Balint, Jess; [EMAIL PROTECTED]
> Subject: Re: More Economic Use of Hash
>
>
> # Why not ...
> while( <INFILE> )
> {
>     @tmp = split( /\|/ );
>     if (exists $freq{$tmp[$table]})
>     {
>         $freq{$tmp[$table]}++
>     }
>     else
>     {
>         $freq{$tmp[$table]}=1
>     }
>     $tot ++
> }
>
> ----- Original Message -----
> From: "Balint, Jess" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Thursday, January 31, 2002 6:45 PM
> Subject: More Economic Use of Hash
>
>
> > I am attemping to create a frequency chart based on a pipe delimited
> > database output. Following is what I have come up with. The hash create
> from
> > this is then output to another file. It seems to be very slow on files
in
> > excess of ~10000 lines. This will be used on ~500000 line files and
needs
> to
> > be a proficient as possible. If anyone knows a better way to do this, it
> > would be extremely helpful. Thank you. -Jess
> >
> > $table is the number of the field which the frequency will be calculated
> on.
> > ex. a|b|c|d| if $table = 3 then c will be used
> > @tmp is the split array of the line input
> > %freqidx is the hash with fields values as keys and frequency counts
> > $tot is for percentage calculation after this loop. this is basically an
> > INFILE line count
> >
> > while( <INFILE> ) {
> >         @tmp = split( /\|/ );
> >         $x = 0;
> >         foreach( keys( %freqidx ) ) {
> >                 if( $tmp[$table] ne $_ ) {
> >                         $x = 1;
> >                 } else {
> >                         $x = 0;
> >                         last;
> >                 }
> >         }
> >         if( $x == 1 ) {
> >                 $freqidx{$tmp[$table]} = 0;
> >         }
> >         $freqidx{$tmp[$table]}++;
> >         $tot++;
> > }
> >
> > --
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
> >
> >
>
> --
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
>
>


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

Reply via email to