I have a bunch of csv file in a simple format say 'Name,Country,Currency'. I need to read all of them and print only the unique union. If they show up in few files they are identical. Tried to use Hash::Merge but seems to be working only for two. I assume I have to reinitialize it in the loop while opening these files for reading but not sure how. In the end I want a file of the same nature but containing all of them without repetition. Many thanks.
Input looks like:
EDL,Finland,Euro
Output want the same format .I made a loop reading the files ,and at any stage I have two hashes %A and %B with $name as keys (after splitting).
$A{$name}=$coun and $B{$name}=$curr
I also have two %merged hashes defined as
$merged1 = Hash::Merge->new('LEFT_PRECEDENT');
my %merged1 = %{ $merged1->merge( \%merged1, \%A ) };
The error I get is complaining about unknown function "merge". Must be a simple thing but cannot see it.
Assuming the lines considered duplicates are identical in all fields, and the data is uniform you can get away with something simple like
perl -ne'print unless $seen{$_}++' universe* > out.csv
Which is a simple dedupe routine (deduping by hash key), then redirect output with the shell.