Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"

Re^2: sort using <=>

by drock (Beadle)
on Aug 13, 2004 at 18:57 UTC ( #382797=note: print w/replies, xml ) Need Help??

in reply to Re: sort using <=>
in thread sort using <=>

I am rethinking whether I need the while and foreach so I have changed it to :
open (FOO, ">$scratches") || die "could not open file:$!"; open (D, "$logf") || die "could not open file:$!"; while (<D>) { ## look for 9840S and ebexpire ## declare OFS = tab ## tell split to split on IRS 0, 1 & 5. Very similar t +o awk print $ if (($_ =~ /9840S/) && ($_ =~ /ebexpire, ebexpire/ )) +{ local $, = "\t"; print F00 +(split)[0,1,5], $/; print FOO (sort { $a <=> $b } $_ ); } # end if } # end while close (FOO); close (D);
I am probably making this too hard, but I want to numerically sort the 3rd field. How do I combine the print FOO statements so that I am still spliting fields 0,1,5 while sorting on field 5? thank you,

Replies are listed 'Best First'.
Re^3: sort using <=>
by Roy Johnson (Monsignor) on Aug 13, 2004 at 20:22 UTC
    Looks to me like you want something like this Schwartzian Transform:
    #open your files as before, then print FOO map { $_->[1] } sort { $a->[0] <=> $b->[0] } map {my @F=split; [substr($F[2],1), $_]} <D>; #close your files as before
    Reading from bottom to top, we construct an array of arrays, where the first element of each element is the sort-field, and the second is the print-field. Then we sort by comparing the sort fields, then we return only the print-fields to print.

    Updated to work on the data provided.

    Caution: Contents may have been coded under pressure.

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://382797]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (2)
As of 2023-06-04 20:24 GMT
Find Nodes?
    Voting Booth?
    How often do you go to conferences?

    Results (22 votes). Check out past polls.