in reply to I just can't see the error in this code

Your use of %finishedusers is wrong. You set it with:

$finishedusers{$array2[7]} = $array2[0]; # Setup keys: "Long Name" => "shortname"

Then you reverse it, then you read it with:

while (($fullname2, $short) = each(%finishedusers))

which should really use "short, full" order instead.