while (@data = $sth->fetchrow_array()) { if ($data[1] ne $tempstate) { undef (@cities); push (@cities, $data[0]); $states{$data[1]} = [ @cities ]; $tempstate = $data[1]; $tempcity = $data[0]; } elsif ($data[0] ne $tempcity) { push (@cities, $data[0]); $states{$tempstate} = [ @cities ]; $tempcity = $data[0]; } }