use strict; use Data::Dumper; my @elements = map { /^\s*$/ ? () : [split /\s+/] } ; print Dumper(\@elements); __DATA__ 1 1234 gg123456789 000-12345-1234-111 12 1234 gg123456789 000-12345-1234-111 123 1234 gg123456789 000-12345-1234-111 #### $VAR1 = [ [ '1', '1234', 'gg123456789', '000-12345-1234-111' ], [ '12', '1234', 'gg123456789', '000-12345-1234-111' ], [ '123', '1234', 'gg123456789', '000-12345-1234-111' ] ];