Hello Monks!
I have rather ugly csv files I need to compare and am running into trouble with a basic need. I simply want to keep columns I am interested in. One complication is that the columns are not necessarily in the same order in each file. I have the names of the headers however. For instance, how would I output only the columns that use the header names: 'Object ID', 'Object Number', 'Description'
I have some code but I would rather forgo the lashing I would recieve by posting it. Here is the skeleton:
#!usr/bin/perl
use strict;
use warnings;
use Text::CSV_XS;
my $csv = Text::CSV_XS->new ({ binary => 1, eol => $/, auto_diag => 0
+});
open my $fh, "<", $ARGV[0] or die "$ARGV[0]: $!\n";
while (1) {
my $row = $csv->getline ($fh) or last;
}
My first thought was to do an if statement on the first row (where the headers are) and keep track of the column number. This seems cumbersome.
So, if "Object ID" is the 3rd column, then use something like this:
while (my $fields = $csv->getline( $fh )) { entry = $fields->[2];}
and output this to a new file.
Thank you for the help and I apologize for my ignorance. I looked at the CPAN description and could not figure out how to do this.