PRyanRay has asked for the wisdom of the Perl Monks concerning the following question:
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:
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.while (my $fields = $csv->getline( $fh )) { entry = $fields->[2];}
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Using TEXT::CSV_XS to delete columns
by CountZero (Bishop) on Nov 10, 2012 at 21:54 UTC | |
by PRyanRay (Novice) on Nov 11, 2012 at 01:37 UTC | |
by CountZero (Bishop) on Nov 11, 2012 at 07:45 UTC |