use Data::Dumper; while(){ push @matrix, [split/\s+/]; } print Dumper(\@matrix); __DATA__ 1 2 3 4 5 6 7 8 9 10 11 12