# first process all available player entries for (my $i = 0; exists $rx->{"player_$i"}; $i++) { # add player info to UPI and remove from hash my @player; push @player, $sid; push @player, delete $rx->{"player_$i"} || "Derp"; push @player, delete $rx->{"team_$i"}; push @player, int (delete $rx->{"frags_$i"} || 0); push @player, delete $rx->{"mesh_$i"}; push @player, delete $rx->{"skin_$i"}; push @player, delete $rx->{"face_$i"}; { # You should put a comment here to say why you are muting these warnings. no warnings 'numeric'; push @player, int (delete $rx->{"ping_$i"} || 0); } push @player, delete $rx->{"ngsecret_$i"}; push @upi, \@player; }