Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Comment on

( #3333=superdoc: print w/ replies, xml ) Need Help??

The print method expects an array reference, not a hash reference:

use v5.12; use warnings; use Text::CSV_XS; my $csv = Text::CSV_XS->new ({ binary => 1, sep_char => ";", eol => $/, auto_diag => 1, }); my @fields = qw( ID NAME INDICATOR VALUE CI_LOW CI_HIGH ); $csv->print (*STDOUT, \@fields); say ''; my @columns = @{$csv->getline (*DATA)}; $csv->column_names (@columns); while (my $hr = $csv->getline_hr (*DATA)) { # my @nr = @{$hr}{'ID'}; $hr->{ID} =~ s/12/Sun/g; $hr->{ID} =~ s/17/Moon/g; $csv->print (*STDOUT, [ map { $hr->{$_} } @columns ]); }

Much easier to read and much faster too would be to use bind_columns

my @fields = qw( ID NAME INDICATOR VALUE CI_LOW CI_HIGH ); $csv->print (*STDOUT, \@fields); my @columns = @{$csv->getline (*DATA)}; my %rec; $csv->bind_columns (\@rec{@columns}); while ($csv->getline (*DATA)) { $rec{ID} =~ s/12/Sun/g; $rec{ID} =~ s/17/Moon/g; $csv->print (*STDOUT, [ @rec{@columns} ]); }

update: I stripped the data sections from the code as they are identical to those in the OP and reduced the second example to show only the changed part.


Enjoy, Have FUN! H.Merijn

In reply to Re: How to print after using getline_hr (Text::CSV_XS)? by Tux
in thread How to print after using getline_hr (Text::CSV_XS)? by vagabonding electron

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!
  • 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, 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, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • Outside of code tags, you may need to use entities for some characters:
            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.
  • Log In?
    Username:
    Password:

    What's my password?
    Create A New User
    Chatterbox?
    and the web crawler heard nothing...

    How do I use this? | Other CB clients
    Other Users?
    Others perusing the Monastery: (5)
    As of 2014-12-29 08:13 GMT
    Sections?
    Information?
    Find Nodes?
    Leftovers?
      Voting Booth?

      Is guessing a good strategy for surviving in the IT business?





      Results (185 votes), past polls