Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic

Re^3: useless use of sort???

by Anonymous Monk
on Mar 22, 2005 at 16:08 UTC ( #441520=note: print w/replies, xml ) Need Help??

in reply to Re^2: useless use of sort???
in thread useless use of sort???

Sure you can, but that's not what your code does. If you want to sort column 16, you will first have to select the 16th column entirely, before you can sort it. So you would do:
  1. Open your input file.
  2. Read it, line by line. Extract column 16, push it to an array.
  3. Close your input file.
  4. Sort your array.
  5. Open your output file.
  6. Write your sorted array.
  7. Close your output file.
What you certainly can't do is reading the input one line at a time, writing something for each line, and then expect the entire thing to be sorted when you're done.

Replies are listed 'Best First'.
Re^4: useless use of sort???
by drock (Beadle) on Mar 22, 2005 at 18:57 UTC
    Understood... thank you! In steps 4,5,6 I am having syntax issues. Is the sorted array on the right? @unsotrted = sort {$b <=> $a } @sorted; Here is my code:
    #use diagnostics; use warnings; use strict; my $file = qq(/var/adm/sa/vm); my $vmout = qq(/var/adm/sa/vm.out); my $cpuout = qq(/var/adm/sa/cpu.out); my $art = qq(/var/adm/sa/arout); my @ar = (); my @ar2 = (); open (FILE, "<$file") || die "unable to open file $!"; open (MEMOUT, ">>$vmout") || die "unable to open file $!"; open (CPOUT, ">>$cpuout") || die "unable to open file $!"; while (<FILE>) { local $, = "\n"; s/id//, s/wa//, print CPOUT push @ar, +(split)[16], $,; s/id//, s/wa//, print MEMOUT +(split)[4], $,; } close (MEMOUT) or warn "unable to close file $!"; close (CPOUT) or warn "unable to close file $!"; close (FILE) or warn "unable to close file $!"; @ar = sort { $a <=> $b } @ar; print "Now printing array 1\n", @ar;
      1. Why are you separating statements with commas instead of semi-colons?
      2. Are you sure you want to remove 'id' and 'wa' once before the first print, and a second time for the second print?
      3. Why are you pushing $, on the array?
      4. Are you sure you want to print even numbers to '/var/adm/sa/cpu.out'?
      5. What's with the local $,, and then putting it in a list you're printing to a file?
      6. What's the purpose of @ar2?
      7. What happened when you tried?
      8. What does the manual page say about sort, and where the unsorted list is?
      9. Do you know any other function where the argument is on the LHS of the assignment, and where the result is put into its last argument?
      10. Why are you using bareword filehandles instead of lexical variables?

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (2)
As of 2023-09-28 20:17 GMT
Find Nodes?
    Voting Booth?

    No recent polls found