use Text::CSV; # ... load data into @array2 my $csv = Text::CSV->new(); for my $line ( @array2 ) { if ( $csv->parse( $line )) { my @fields = $csv->fields; $Tex{$fields[0]} = \@fields; # or maybe you want this instead? : # $Tex{$fields[0]} = [ @fields[1..$#fields] ]; } else { warn "CSV parse error on: $line\n"; } }