use warnings; use strict; use Data::Dumper; my @rows; while () { my @data = split(/ /,$_, 6); push (@rows, \@data); } print Dumper \@rows; __DATA__ abc 322 2/3/09 aaa aadda dasdas a1 a2 a3 def 433 3/4/08 dasd bdbdbd wings b1 b2 b3 b4 b5