Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

Re: sort using <=>

by Happy-the-monk (Canon)
on Aug 13, 2004 at 18:29 UTC ( [id://382790]=note: print w/replies, xml ) Need Help??


in reply to sort using <=>

...
} # end while

seek(D, 0,0); # add this to rewind <D> before reusing it.

foreach (<D>) {
...

Maybe rethink if you need a while loop first and a foreach loop next?
What do you expect the sort to do actually?

Update:

The solution to get the ... splitted in the second print line is simply to use split there too:

print F00 +(split)[0,1,5], $/;
print FOO (sort { $a <=> $b } +(split /\s+/, $_)[0,1,5] );

Cheers, Sören

Replies are listed 'Best First'.
Re^2: sort using <=>
by drock (Beadle) on Aug 13, 2004 at 18:57 UTC
    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,
      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?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others scrutinizing the Monastery: (6)
As of 2024-04-20 02:30 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found