Sorry it took so long....
	Code:
	#!/usr/bin/perl
use Net::Telnet;
use strict;
my $server = "Website title : Who's online";
my $titleimg = "http://kmra.fliphost.net/themes/Illusion/images/head/banner.jpg";
my $host = "localhost";
my $user = "johndoe";
my $pass = "password";
my %players;
my $telnet = new Net::Telnet( Port=>9000, Timeout=>200, Errmode=>'die', Prompt=>'/knightz> $/i');
# print "Connecting...\n";
$telnet->open($host);
sleep 1;
$telnet->print($user);
$telnet->waitfor("/:/");
$telnet->print($pass);
$telnet->waitfor("/>/");
my @wholist = $telnet->cmd('who');
$telnet->close();
print "Content-type: text/html\n\n";
print "<title>$server online user list</title>";
print "<meta http-equiv='REFRESH' content='60;url=whoson.pl'>";
print "<body topmargin='0'>";
print "<center><img src='$titleimg'>";
print "<h3>$server</h3>";
foreach my $line (@wholist) {
    if($line =~/^ +\[.*/) { # regular players
        my ($v_userinfo, $v_zone, $v_account_id, $v_account_name, $v_lsid, $v_status) = split(/[a-zA-Z]+:/, $line);
        # clean up the spaces and other garbage
        $v_userinfo =~s/^ +//;
        $v_userinfo =~s/ +$//;
        $v_userinfo =~s/RolePlay |ANON //;
        $v_zone =~s/^ +([a-z]+) +$/$1/;
        # if no guild
        if($v_userinfo =~/^\[([0-9]+) ([A-Za-z ]+)\] ([A-Za-z_]+) \(([A-Za-z ]+)\)$/) {
            if($1>0) {
                $players{$3}{"level"} = $1;
                $players{$3}{"class"} = $2;
                $players{$3}{"race"} = $4;
                $players{$3}{"guild"} = "\ ";
                $players{$3}{"zone"} = $v_zone;
            } else {
                $players{$3}{"level"} = "\ ";
                $players{$3}{"class"} = "\ ";
                $players{$3}{"race"} = "\ ";
                $players{$3}{"guild"} = "\ ";
                $players{$3}{"zone"} = "zoning";
            }
        # if in a guild
        } elsif($v_userinfo =~/^\[([0-9]+) ([A-Za-z ]+)\] ([A-Za-z_]+) \(([A-Za-z ]+)\) \<(.*)\>$/) {
            if($1>0) {
                $players{$3}{"level"} = $1;
                $players{$3}{"class"} = $2;
                $players{$3}{"race"} = $4;
                $players{$3}{"guild"} = $5;
                $players{$3}{"zone"} = $v_zone;
            } else {
                $players{$3}{"level"} = "\ ";
                $players{$3}{"class"} = "\ ";
                $players{$3}{"race"} = "\ ";
                $players{$3}{"guild"} = "\ ";
                $players{$3}{"zone"} = "zoning";
            }
        }
    } elsif($line =~/\* GM-.*/) { # GMs
        $line =~s/\* GM-[A-Za-z]+ \*//;
        my ($v_userinfo, $v_zone, $v_account_id, $v_account_name, $v_lsid, $v_status) = split(/[a-zA-Z]+:/, $line);
        # clean up the spaces and other garbage
        $v_userinfo =~s/^ +//;
        $v_userinfo =~s/ +$//;
        $v_userinfo =~s/RolePlay |ANON //;
        $v_zone =~s/^ +([a-z]+) +$/$1/;
        # if no guild
        if($v_userinfo =~/^\[([0-9]+) ([A-Za-z ]+)\] ([A-Za-z_]+) \(([A-Za-z ]+)\)$/) {
            if($1>0) {
                $players{$3}{"level"} = $1;
                $players{$3}{"class"} = $2;
                $players{$3}{"race"} = $4;
                $players{$3}{"guild"} = "\ ";
                $players{$3}{"zone"} = $v_zone;
                $players{$3}{"gm"} = "yes";
            } else {
                $players{$3}{"level"} = "\ ";
                $players{$3}{"class"} = "\ ";
                $players{$3}{"race"} = "\ ";
                $players{$3}{"guild"} = "\ ";
                $players{$3}{"zone"} = "zoning";
                $players{$3}{"gm"} = "yes";
            }
        # if in a guild
        } elsif($v_userinfo =~/^\[([0-9]+) ([A-Za-z ]+)\] ([A-Za-z_]+) \(([A-Za-z ]+)\) \<(.*)\>$/) {
            if($1>0) {
                $players{$3}{"level"} = $1;
                $players{$3}{"class"} = $2;
                $players{$3}{"race"} = $4;
                $players{$3}{"guild"} = $5;
                $players{$3}{"zone"} = $v_zone;
                $players{$3}{"gm"} = "yes";
            } else {
                $players{$3}{"level"} = "\ ";
                $players{$3}{"class"} = "\ ";
                $players{$3}{"race"} = "\ ";
                $players{$3}{"guild"} = "\ ";
                $players{$3}{"zone"} = "zoning";
                $players{$3}{"gm"} = "yes";
            }
        }
    }
}
print "<html><body><table border='1' cellpadding='3' cellspacing='0'>\n";
print "<tr><td align='center'>Player</td><td align='center'>Class</td><td align='center'>Zone</td><td align='center'>Guild</td></tr>\n";
my $count = 0;
if(scalar(%players) > 0) {
    foreach my $player (sort keys %players) {
        my $fontcolor;
        if(defined $players{$player}{"gm"}) {
            $fontcolor = '#008f1e';
        } else {
            $fontcolor = '#000000';
        }
        print "<tr><td align='center'><font color='$fontcolor'>$player</font></td><td>$players{$player}{'level'} $players{$player}{'race'} $players{$player}{'class'}</td><td align='center'>$players{$player}{'zone'}</td><td align='center'>$players{$player}{'guild'}</td></tr>\n";
        $count++;
    }
} else {
    print "<tr><td colspan='4'>No players online</tr>";
}
print "</table><br>";
print "$count players online.";
print "</center>";
print "</body></html>\n";