I have to run, otherwise I would elaborate a bit.

The code is below.  Check out the "perldoc perlreftut" for what the
"[EMAIL PROTECTED]", "@{$row}", and "$a->[2]" means.  Check out "perldoc -f sort" for
what the "sort {...} @rows" means.  And of course ask questions if you get
stuck (but take a look at the docs first).

############ THE CODE ############

my @rows;

while (my $line = <DATA>) {
  chomp($line);
  my @cols = split(/\s+/, $line);
  push @rows, [EMAIL PROTECTED];
}

print "Sorted on 5th column:\n";
@rows = sort {$a->[4] <=> $b->[4]} @rows;

foreach my $row (@rows) {
  print "@{$row}\n";
}

print "Sorted on 3rd column:\n";
@rows = sort {$a->[2] <=> $b->[2]} @rows;

foreach my $row (@rows) {
  print "@{$row}\n";
}

__DATA__
Abc 12.8 8 "left" 1 15.7
Def  13.8 9 "top" 0 19.7
gef  14.8 9 "left" 0 19.7
Dgf  12.3 9 "right" 4 99.6
cef  16.8 4 "right" 0 89.7
baf  32.8 7 "bottom" 5 79.8
efg  16.8 5 "right" 0 56.7
etg  12.8 2 "left" 7 34.7

############ THE OUTPUT ############

$ perl sort.pl 
Sorted on 5th column:
efg 16.8 5 "right" 0 56.7
Def 13.8 9 "top" 0 19.7
gef 14.8 9 "left" 0 19.7
cef 16.8 4 "right" 0 89.7
Abc 12.8 8 "left" 1 15.7
Dgf 12.3 9 "right" 4 99.6
baf 32.8 7 "bottom" 5 79.8
etg 12.8 2 "left" 7 34.7
Sorted on 3rd column:
etg 12.8 2 "left" 7 34.7
cef 16.8 4 "right" 0 89.7
efg 16.8 5 "right" 0 56.7
baf 32.8 7 "bottom" 5 79.8
Abc 12.8 8 "left" 1 15.7
Dgf 12.3 9 "right" 4 99.6
Def 13.8 9 "top" 0 19.7
gef 14.8 9 "left" 0 19.7


-----Original Message-----
From: Boon Chong Ang [mailto:[EMAIL PROTECTED]
Sent: Thursday, January 29, 2004 7:38 PM
To: [EMAIL PROTECTED]
Subject: sort


Hi,

I want to write a perl script to do something like this

 

Abc 12.8 8 "left" 1 15.7

Def  13.8 9 "top" 0 19.7

gef  14.8 9 "left" 0 19.7

Dgf  12.3 9 "right" 4 99.6

cef  16.8 4 "right" 0 89.7

baf  32.8 7 "bottom" 5 79.8

efg  16.8 5 "right" 0 56.7

etg  12.8 2 "left" 7 34.7

 

 

Just say I want to sort the row based on the value on fifth or third column,
any advice how to do so?

 

 

Thank you & best regards,

ABC

 


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to