my %info = ( ip => '0.0.0.0'); my @list = (); while (my @prev = $sql->fetchrow_array()){ $info{ $prev[1] } = $prev[2]; push @list, { %info }; } # example usage of created list print $_->{ip}, "\n" for @list;