I'm using a split command to parse a comma separated value (CSV) file (there are no standard field sizes, they vary a lot) that is produced from a vendor product. It has worked well for years. The format is something like: ($semi_thirty_char_node_key,undef,undef,undef,$mem_size,$spec,$num_proc,undef,undef,undef,$mode,undef)= split /,/, $inline; Recently the vendor started using single quoted strings in the data like 'IBM machine' or worse 'IBM,16576523'. Note the comma in the second one that throws off my split. I'm not in love with split, I'll accept any valid perlish way that I can understand. What I need it is a way to parse a CSV file that knows to ignore commas within single quoted strings. Any thoughts or areas to study that may yield a solution will be deeply appreciated.

In reply to A better way to split CSV files with quoted strings that may contain commas? by rkaminski

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.