my @grid_a; # there are only 9 particles my @grid_b; # there are lots of particles for my $x (0..9) { for my $y (0..9) { for my $particle (0..8) { $grid_a[$x][$y][$particle] = 1; $grid_b[$x][$y]{$particle} = 1; } my $pcount = keys %{$grid_b[$x][$y]}; } } use Data::Dumper; print Dumper(\@grid_a, \@grid_b);