if ($txtfile =~ m/(some associative pattern for each CSV list)/gs) { my $key = $1; while ($txtfile =~ m/(CSV)/gs) { push @{$hash{$key}}, $1 } } #### @{$hash{$key}}[0] = 0,1,2,3 @{$hash{$key}}[1] = 4,5 @{$hash{$key}}[2] = 6,7,8,9 #### @{$hash{$key}}[0] = 0,1 @{$hash{$key}}[1] = 2,3 @{$hash{$key}}[2] = 4,5 ...