#!/usr/bin/perl -w use strict; my $memberListFile = "members.txt"; my $hits; my %rank; my $user; my $email; my $username; my $sitename; my $url; my $button; my $desc; print "Content-type:text/html\n\n"; open(USERS, $memberListFile) die ("can't open $memberListFile: $!"); while() { chomp; # ah, cleverly working on $_ ($user,$email) = split(/\|/); my $USR; # better find some naming conventions, for me looks this like a CONSTANT in the source $user .= ".txt"; # still ugly, but better compose filenames before using them (makes debugging easier) open (USR,"$user") or die ("can't open $user: $!"); $USR = ; # scalar context ? why? do all these files only have one line? close(USR); ($username, $sitename, $url, $email, $button, $desc, $hits) = split(/\|/, $USR); $rank{$username} = { 'url' => $url, 'email' => $email, 'button' => $button, 'desc' => $desc, 'hits' => $hits, 'sitename' => $sitename, 'user' => $username }; } print < eof foreach (sort {$rank{$b}{'hits'} <=> $rank{$a}{'hits'}} keys %rank) { # oh ouh here it is not clever to work with $_ print < eof } print "
Site button Hits
$rank{$_}{sitename}
$rank{$_}{desc}
$rank{$_}{hits}
\n";