use strict; use warnings; use Data::Dumper; my $file = "1.00 InDev 01-Jun-2013 1.00 InTest 15-Jul-2013 1.00 InUAT 31-Jul-2013 1.00 InProd 15-Sep-2013 1.01 InDev 01-Jul-2013 2.00 InDev 01-Aug-2013 3.00 InDev 01-Sep-2013"; my @file_content = split( /\n/, $file ); my @full_data; for my $line (@file_content) { my @fields = split /\s+/, $line; push @full_data, \@fields; } print Dumper \@full_data; #### $ perl table.pl $VAR1 = [ [ '1.00', 'InDev', '01-Jun-2013' ], [ '1.00', 'InTest', '15-Jul-2013' ], [ '1.00', 'InUAT', '31-Jul-2013' ], [ '1.00', 'InProd', '15-Sep-2013' ], [ '1.01', 'InDev', '01-Jul-2013' ], [ '2.00', 'InDev', '01-Aug-2013' ], [ '3.00', 'InDev', '01-Sep-2013' ] ]; #### for my $line (@file_content) { my @fields = split /\s+/, $line; push @full_data, \@fields; } #### push @full_data, [split] for @file_content;