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.


In reply to Using TEXT::CSV_XS to delete columns by PRyanRay

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.