eg.Table;M Data;O ...... #### %hMFD = ( Name_of_the_file_without_ext => { Fieldname_1(column A) => 'value M or O(column B)', Fieldname_2(column A) => 'value M or O(column B)', . . . Fieldname_x(column A) => 'value M or O(column B)', }, Name_of_the_next_file_without_ext => { Fieldname_1(column A) => 'value M or O(column B)', Fieldname_2(column A) => 'value M or O(column B)', . . . Fieldname_x(column A) => 'value M or O(column B)', }, ); #### #!c:\perl\ -w use Text::CSV; opendir(KAT, "$ARGV[0]"); @fls=grep {/\.csv$/} readdir KAT; closedir KAT; foreach $fl(@fls) { $fl=~s/\..*//; print "$fl\n"; } @files=; foreach $file (@files){ print "$file\n"; } foreach $file (@files){ my $csv = Text::CSV->new(); open (CSV, "<", $file) or die $!; while () { if ($csv->parse($_)) { my @columns = $csv->fields(); print "@columns\n"; } else { my $err = $csv->error_input; print "Failed to parse line: $err"; } } close CSV; }