open(INFILE, "products-id.txt")|| die "Cannot open products-id.txt file"; open (OUTPUT,">$output") or die ("Can't open file $output $!"); chomp(my @ProductArray = map { /^\s*$/ ? () : $_ } ); close (INFILE); foreach my $line(@ProductArray) { my ($Category, $ID, $Name, $Type, $Size) = split( / /, $line ); %AllProducts = ($Category => [$ID, [$Name, $Type, $Size]]); print OUTPUT Dumper(\%AllProducts); }