in reply to String to two dimensional array

Here's another approach that you might find instructive:
my $text = "0 X X X ..."; my @items = split(' ', $text); my @array; while (@items) { push(@array, [ splice(@items, 0, 8) ]); } pp \@array; use Data::Dumper;
The basic idea is:
  1. Split the input string into an array (@items).
  2. Remove the first 8 elements of @items, create an array ref out of those elements, and push that array ref onto the end of @array
  3. Repeat step 2 until @items is empty.

To make sure you have a full matrix, you can check the length of the last row with:

die "incomplete last row\n" unless (scalar(@{$array[-1]} == 8);