Forum Moderators: coopster & phranque

Message Too Old, No Replies

Sorting Arrays

It's simple enough, but it can get very complicated

         

adni18

10:53 pm on Sep 30, 2004 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



Here's my script:

#!/usr/bin/perl

use strict;


open Wall1, "< ratewallpaper1.txt" or die "Error";
chomp ( my @wp_data = <Wall1> );
close Wall1;

open Wall2, "< ratewallpaper2.txt" or die "Error";
@wp_data = (<Wall2>,@wp_data);
close Wall2;

open Wall3, "< ratewallpaper3.txt" or die "Error";
@wp_data = (<Wall3>,@wp_data);
close Wall3;

open Wall4, "< ratewallpaper4.txt" or die "Error";
@wp_data = (<Wall4>,@wp_data);
close Wall4;

open Wall5, "< ratewallpaper5.txt" or die "Error";
@wp_data = (<Wall5>,@wp_data);
close Wall5;

open Wall6, "< ratewallpaper6.txt" or die "Error";
@wp_data = (<Wall6>,@wp_data);
close Wall6;

open Wall7, "< ratewallpaper7.txt" or die "Error";
@wp_data = (<Wall7>,@wp_data);
close Wall7;

open Wall8, "< ratewallpaper8.txt" or die "Error";
@wp_data = (<Wall8>,@wp_data);
close Wall8;

open Wall9, "< ratewallpaper9.txt" or die "Error";
@wp_data = (<Wall9>,@wp_data);
close Wall9;

open Wall10, "< ratewallpaper10.txt" or die "Error";
@wp_data = (<Wall10>,@wp_data);
close Wall10;

open Wall11, "< ratewallpaper11.txt" or die "Error";
@wp_data = (<Wall11>,@wp_data);
close Wall11;

open Wall12, "< ratewallpaper12.txt" or die "Error";
@wp_data = (<Wall12>,@wp_data);
close Wall12;

open Wall13, "< ratewallpaper13.txt" or die "Error";
@wp_data = (<Wall13>,@wp_data);
close Wall13;

open Wall14, "< ratewallpaper14.txt" or die "Error";
@wp_data = (<Wall14>,@wp_data);
close Wall14;

my @wp_data_sorted = sort {
(split '\¦', $b, 5)[2] <=>
(split '\¦', $a, 5)[2]
} @wp_data;

print "Content-type: text/html\n\n";
print "<HEAD><title>Iron Magma - The Top Ten</title></HEAD><body bgcolor=black style=color:white><base href=http://www.example.net/><link rel=stylesheet href=imstyle.css><CENTER><img src=graphics/hot.jpg title=\'The Top Ten Wallpapers\'><br>";
my $num=1;
print "<center><table align=center width=100% style=color:white cellspacing=0><tr><td valign=top><script language=javascript src=http://www.example.net/writeW.js></script></td><td valign=top><table>";
for ( my $i=0; $i<10; $i++ ) {
my ($name, $votes, $rating, $url, $destination) =
split '\¦', $wp_data_sorted[$i], 5;
print "<tr><td>$num. </td><td><a href=$destination><img border=0 src=\'graphics/$url\_prev.jpg\' width=300 height=225></a></td><td><b> $name </b><br>Number of Votes: $votes<br>Average Rating: <script language=javascript>var boat=\'$rating\';\nvar ave=eval(boat)/eval($votes);\nif(ave.indexOf(\'.\')!=-1){document.write(ave.substring(0,eval(boat.indexOf(\'.\'))+eval(3)))}\nelse{document.write(boat)}</script></td></tr>\n";
$num++
}
print "</table></td></tr></table><br></center><script language=javascript src=footer.js></script>";

I need to sort the arrays by (split '\¦', $b, 5)[2]/(split '\¦', $b, 5)instead of just (split '\¦', $b, 5)[2]. How can I do this?

[1][edited by: jatar_k at 7:07 pm (utc) on Oct. 1, 2004]
[edit reason] removed urls [/edit]

upside

8:07 am on Oct 1, 2004 (gmt 0)

10+ Year Member



All that reading from files is horribly inefficient. You'd be so much better off using a database. If your data was in a mysql database you would query it like this to sort it how you desire:


select a, b from database order by a,b desc

Also, you may want to remove the URL's from your post...

adni18

11:26 am on Oct 1, 2004 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



For some reason the owner edit button is gone... I don't understand MySQL by the way, but thanks anyway.

adni18

9:18 pm on Oct 1, 2004 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



Thank you, jatar_k for editing my post. Is there a reason I can't edit my posts?

cyberws

3:27 pm on Oct 6, 2004 (gmt 0)

10+ Year Member



If you want to use flatfiles at least use CSV files and the DBD::CSV module. That way you can create SQL queries against a CSV file.