how to do sort in perl?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting how to do sort in perl?
# 1  
Old 07-17-2008
how to do sort in perl?

Hi,
Can anyone advise how to correct my script pls?
I'm not getting the correct output =(

Details below:

Logfile
========
Player Num : 14
Player Name : Jacee Thirkins
MVP winner : 1998
End of details....

Player Num : 35
Player Name : Lander Diaz
MVP winner : 2002
End of details....

Player Num : 14
Player Name : Jacee Thirkins
MVP winner : 1999
End of details....

Player Num : 35
Player Name : Lander Diaz
MVP winner : 2001
End of details....

Player Num : 14
Player Name : Oman Rodriguez
MVP winner : 1997
End of details....

Player Num : 35
Player Name : Larry Simpkins
MVP winner : 2003
End of details....

Player Num : 14
Player Name : Jacee Thirkins
MVP winner : 1996
End of details....

Player Num : 35
Player Name : Lander Diaz
MVP winner : 2002
End of details....

Player Num : 14
Player Name : Stephen Jabinzki
MVP winner : 1999
End of details....

Player Num : 35
Player Name : Lander Diaz
MVP winner : 2004
End of details....

Player Num : 35
Player Name : Larry Simpkins
MVP winner : 2005
End of details....


Script
=======
open (INFILE,"$inputfile");
open (OUTPUT, ">$outfile");

my %player_count;
my @all_player;

while ($cur_rec = <INFILE>)
{
if ( $cur_rec =~ m/Player Name/ )
{
@record = split(/:/, $cur_rec);
$playername = "$record[1]" . "$record[2]";
push(@all_player, $playername);
}
}

@sorted_player = sort @all_player;
for $player (@sorted_player)
{
if ("$player" eq "$prev_player" || $ctr == 0 )
{
$ctr++;
}
else
{
$player_count{$ctr} = $player;
$ctr=1;
}
$prev_player = $player;
}

$countr = 0;
for $count (keys %player_count)
{
if ( $countr <= 4 )
{
print "\nPlayer: $player_count{$count} MVP awards: $count\n";
$countr++;
}
else
{
$player_count{$player} = $ctr;
$ctr = 0;
}
}

close (TEST);
close (OUTPUT);


Expected output (should be in order who got the most awards in total):


Top5 MVP winners
===============
Lander Diaz
Jacee Thirkins
Larry Simpkins
Oman Rodriguez
Stephen Jabinzki
# 2  
Old 07-17-2008
Code:
my %player_count;

open (INFILE,"$inputfile");

while (my $cur_rec = <INFILE>){
   if ( $cur_rec =~ m/Player Name\s*:\s*(.*)/ ){
      $player_count{$1}++;
   }
}
close (INFILE);

my @top_five = (sort{$player_count{$b} <=> $player_count{$a}} keys %player_count)[0..4];
print "$_ = $player_count{$_}\n" for @top_five;

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Need help in sort variable in perl

Hi, I need help in sorting variables in perl i have two variables and if those two variables are equal then its good. I have a problem here example: variable1= number2 number1 variable2=number1 number2 in my case above both the variables are also equal but the condition is not... (5 Replies)
Discussion started by: rocky1954
5 Replies

2. Shell Programming and Scripting

perl hash sort

I have a hash as below 'C1' => { 'x' => 41.9 , 'y' => 5.79999999999995} 'c2 288' => { 'x' => 428.05 , 'y' => 5.79999999999995} 'turn' => { 'x' => 493.25 , 'y' => 209.85} '0001' => { 'x' => 530.1 , 'y' => 195.7} '000001' => { 'x' => 235.25 , 'y' => 728.15} 'XYZ' => { 'x' => 56.65 , 'y' =>... (6 Replies)
Discussion started by: chakrapani
6 Replies

3. Shell Programming and Scripting

sort - perl

Hi, can I sort the fields on the basis of dates in the following format? from this Dec 17 2007 2:18:18:000PM Dec 17 2007 5:18:18:000AM Jan 19 2009 4:30:02:000AM Mar 21 2010 9:13:55:000AM Dec 16 2007 4:29:21:000PM Dec 24 2009 12:29:23:000PM to Dec 16 2007 4:29:21:000PM... (2 Replies)
Discussion started by: shellwell
2 Replies

4. UNIX for Advanced & Expert Users

Perl Sort

I am getting the problem to sort these input in perl. INPUT ------ Eddie-3 Michael-1 Nica-4 Montoya-6 Then the program should print the output as follows: OUTPUT ------- Michael-1 Eddie-3 Nica-4 Montoya-6 I am only able to sort to the words but I want to sort to numbers.. My... (5 Replies)
Discussion started by: mr_harish80
5 Replies

5. Shell Programming and Scripting

sort in perl

Hi Is there any way I could reproduce the following code in perl 5.8: sort -u FILE | sort -t: -k1,1 -k2n which sorts by unicity first, then by first key, then by second key in numeric format. What I have now is @sort_array=uniq sort @sort_array; after the contents of my... (5 Replies)
Discussion started by: Indalecio
5 Replies

6. Shell Programming and Scripting

perl sort

Hi all, Say i have a array @array=("abc,"a",ab"); I would like to sort them according to the length. Any idea? thanks in advanced. i tried below code, but not work. sub sort_fun{ if (length shift(@_) >= length shift(@_) ){ return 1; } else{ return 0; } } (1 Reply)
Discussion started by: summer_cherry
1 Replies

7. Shell Programming and Scripting

Sort and Unique in Perl

Hi, May I know, if a pipe separated File is large, what is the best method to calculate the unique row count of 3rd column and get a list of unique value of the 3rdcolum? Thanks in advance! (20 Replies)
Discussion started by: deepakwins
20 Replies

8. Shell Programming and Scripting

sort function in perl

Hi, here is my perl script.This script creates an array and is sorting it using the in-built sort function in perl. #!/usr/local/bin/perl my number=6; my @num_arr=(1,2,3,4,5); my @array=(23,"$number","Hello",2.345,@num_arr); #printing the array print... (2 Replies)
Discussion started by: DILEEP410
2 Replies

9. Shell Programming and Scripting

sort and uniq in perl

Does anyone have a quick and dirty way of performing a sort and uniq in perl? How an array with data like: this is bkupArr BOLADVICE_VN this is bkupArr MLT6800PROD2A this is bkupArr MLT6800PROD2A this is bkupArr BOLADVICE_VN_7YR this is bkupArr MLT6800PROD2A I want to sort it... (4 Replies)
Discussion started by: reggiej
4 Replies

10. Shell Programming and Scripting

Sort file in perl

Hi, I have an entry file for a perl script from which I need to remove duplicate entry. For example: one:two:three one:four:five two:one:three must become : one:two:three two:one:three The duplicate entry is only the first field. I try many options of sort system command but don't... (4 Replies)
Discussion started by: annececile
4 Replies
Login or Register to Ask a Question