Hallo,
Ik ben bezig een highscore lijst te maken vanuit een platte file. opzich werkt dit goed maar ik heb nog een probleem
Het probleem is dat ik op 2 waarden wil sorteren en het lukt me niet, ik zie iets over het hoofd.
Ik zou graag eerst sorteren op veld 1 en dan op veld 2
in file data.db staat het volgende:
test|2|23000
test2|3|3400
Script:
#!/usr/bin/perl
use CGI::Carp qw(fatalsToBrowser);
print "Content-type:text/html\n\n";
open(INF,"data.db") or dienice("Can't open data.db: $! \n");
@totscore = <INF>;
close(INF);
print <<EndOfHTML;
<HTML><HEAD><TITLE>Highscore</TITLE>
</HEAD>
<BODY text="#FFFFFF" bgcolor="#000000" link="#FFFF00" leftMargin=0 topMargin=0 marginheight="0" marginwidth="0">
<center><BR>
<h3>HighScore:</h3><BR>
<table border=0>
<TR><TD align="center">Player's Name</TD><TD align="center">The Score</TD><TD align="center">Number of Balls</TD></TR>
EndOfHTML
foreach $i (sort byballs @totscore) {
chomp($i);
($player,$balls,$score) = split(/\|/,$i);
print "<TR><TD align=\"center\">$player</TD><TD align=\"center\">$score</TD><TD align=\"center\">$balls</TD></TR>";
}
print <<EndOfHTML;
</table>
</BODY></HTML>
EndOfHTML
sub byballs {
@a = split(/\|/,$a);
@b = split(/\|/,$b);
$a[2] <=> $b[2]
}
sub dienice {
my($msg) = @_;
print "<h2>Error</h2>\n";
print $msg;
exit;
}
Deze script sorteert nu alleen op veld 3.
Wat doe ik fout
Ik ben bezig een highscore lijst te maken vanuit een platte file. opzich werkt dit goed maar ik heb nog een probleem
Het probleem is dat ik op 2 waarden wil sorteren en het lukt me niet, ik zie iets over het hoofd.
Ik zou graag eerst sorteren op veld 1 en dan op veld 2
in file data.db staat het volgende:
test|2|23000
test2|3|3400
Script:
#!/usr/bin/perl
use CGI::Carp qw(fatalsToBrowser);
print "Content-type:text/html\n\n";
open(INF,"data.db") or dienice("Can't open data.db: $! \n");
@totscore = <INF>;
close(INF);
print <<EndOfHTML;
<HTML><HEAD><TITLE>Highscore</TITLE>
</HEAD>
<BODY text="#FFFFFF" bgcolor="#000000" link="#FFFF00" leftMargin=0 topMargin=0 marginheight="0" marginwidth="0">
<center><BR>
<h3>HighScore:</h3><BR>
<table border=0>
<TR><TD align="center">Player's Name</TD><TD align="center">The Score</TD><TD align="center">Number of Balls</TD></TR>
EndOfHTML
foreach $i (sort byballs @totscore) {
chomp($i);
($player,$balls,$score) = split(/\|/,$i);
print "<TR><TD align=\"center\">$player</TD><TD align=\"center\">$score</TD><TD align=\"center\">$balls</TD></TR>";
}
print <<EndOfHTML;
</table>
</BODY></HTML>
EndOfHTML
sub byballs {
@a = split(/\|/,$a);
@b = split(/\|/,$b);
$a[2] <=> $b[2]
}
sub dienice {
my($msg) = @_;
print "<h2>Error</h2>\n";
print $msg;
exit;
}
Deze script sorteert nu alleen op veld 3.
Wat doe ik fout
I believe what I want to Believe