zing has asked for the wisdom of the Perl Monks concerning the following question:
File_2.csvtarget1,48,12,7 target2,17,16,2 target3,22,6,1
File_3.csvtarget5,14,12,8,,3, target6,5,7,9,,,15
File_4.csvtarget1,,,,,,13 target2,,,,,,8 target4,,,,11,5,6
And I want to merge them all specific to row and column each value is in(preserving column information also). My present code is working fine but its not able to preserve the column information for any value. Here goes my present scripttarget1,,,,51,8 target2,,,,87,42 target4,22,3,7,,
The merged output(WRONG) generated by above codeuse strict; use warnings; print ("Now merging \n"); my $filenum = 0; my ( %row_val, %data ); foreach my $file ( sort glob("*.csv") ) { $filenum++; open my $fh, "<", $file or die $!; while ( my $line = <$fh> ) { chomp $line; my ( $row_val, @values ) = split /,/, $line; $row_val{$row_val} = 1; $data{$filenum}{$row_val} = \@values; } close $fh; } foreach my $row_val ( sort keys %row_val ) { print $row_val, ",", join( ",", map { $data{$_}{$row_val} ? @{ $da +ta{$_}{$row_val} } : ",," } 1 .. $filenum ), "\n"; }
target1,48,12,7,,,,,,,,,13,,,,51,8 target2,17,16,2,,,,,,,,,8,,,,87,42 target3,22,6,1,,,,,,,,, target4,,,,,,,,,,11,5,6,22,3,7 target5,,,,14,12,8,,3,,,,,, target6,,,,5,7,9,,,15,,,,,,
-----DESIRED/CORRECT OUTPUT-----
target1,48,12,7,51,8,13 target2,17,16,2,87,42,8 target3,22,6,1,,, target4,22,3,7,11,5,6 target5,14,12,8,,3, target6,5,7,9,,,15
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: merging csv files into a third file preserving column & row
by kcott (Archbishop) on Apr 01, 2013 at 11:47 UTC | |
|
Re: merging csv files into a third file preserving column & row
by poj (Abbot) on Apr 01, 2013 at 10:51 UTC | |
|
Re: merging csv files into a third file preserving column & row
by Loops (Curate) on Apr 01, 2013 at 12:02 UTC | |
|
Re: merging csv files into a third file preserving column & row
by Anonymous Monk on Apr 01, 2013 at 10:21 UTC |