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>