RE: sorting data (more than one scalar involved)

2002-09-26 Thread Nikola Janceski

well.. TIMTOWTDI

I would store this as a nested array in a hash:

my %CLANS;
while(FILE){
chomp;
my($clan, @scores) = split /,/;
$CLANS{$clan} = \@scores;
}

# to sort in order
@clans_in_win_order = sort {
$CLANS{$b}[0] = $CLANS{$a}[0] ## sort by most wins first
||  # then
$CLANS{$a}[1] = $CLANS{$b}[1] ## sort by least losses
|| # then
$CLANS{$b}[2] = $CLANS{$a}[2] ## sort by most points for
## etc.
} keys %CLANS;

## so you print in the order of @clans_in_win_order;  remember hashes don't
keep any specific order... only arrays do.


 -Original Message-
 From: Steveo [mailto:[EMAIL PROTECTED]]
 Sent: Thursday, September 26, 2002 8:48 AM
 To: [EMAIL PROTECTED]
 Subject: sorting data (more than one scalar involved)
 
 
 I understand how to sort $string1 and $string2 but I have something a 
 little more complicated (I think at least) and I've never done this 
 before.  This is what my data looks like (flat ascii file)
 
 (clan, wins, losses, points for, points against)
 
 dod,4,3,700,400
 cs,5,2,950,250
 hl,0,7,300,1000
 
 What I want to do is read this flat ascii text file into a 
 script and print 
 it out on a webpage so the clans are ranked by wins, so on a 
 webpage it 
 would look like this:
 
 Clan W L PF PA
 
 CS   5 2  950250
 DOD 4 3   700   400
 HL   0  7   300   1000
 
 I can open and close the ascii text file.  Whats an approach 
 for going 
 about sorting this data?
 Steveo (aka Haiku)
 [EMAIL PROTECTED]
 www.linuxhaiku.com
 
 
 -- 
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]
 



The views and opinions expressed in this email message are the sender's
own, and do not necessarily represent the views and opinions of Summit
Systems Inc.


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




Re: sorting data (more than one scalar involved)

2002-09-26 Thread John W. Krahn

Steveo wrote:
 
 I understand how to sort $string1 and $string2 but I have something a
 little more complicated (I think at least) and I've never done this
 before.  This is what my data looks like (flat ascii file)
 
 (clan, wins, losses, points for, points against)
 
 dod,4,3,700,400
 cs,5,2,950,250
 hl,0,7,300,1000
 
 What I want to do is read this flat ascii text file into a script and print
 it out on a webpage so the clans are ranked by wins, so on a webpage it
 would look like this:
 
 Clan W L PF PA
 
 CS   5 2  950250
 DOD 4 3   700   400
 HL   0  7   300   1000
 
 I can open and close the ascii text file.  Whats an approach for going
 about sorting this data?


Something like this should work:

open FILE, 'somefile' or die Cannot open 'somefile': $!;

printf %-5s %8s %8s %8s %8s\n, qw(Clan W L PF PA);
printf %-5s %8d %8d %8d %8d\n, @$_
for sort { $b-[1] = $a-[1] }
map  { [ split /,/ ] } FILE;



John
-- 
use Perl;
program
fulfillment

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]