Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

Re: How to print after using getline_hr (Text::CSV_XS)?

by Tux (Monsignor)
on Nov 09, 2011 at 11:46 UTC ( #937052=note: print w/ replies, xml ) Need Help??


in reply to How to print after using getline_hr (Text::CSV_XS)?

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


Comment on Re: How to print after using getline_hr (Text::CSV_XS)?
Select or Download Code
Re^2: How to print after using getline_hr (Text::CSV_XS)?
by vagabonding electron (Hermit) on Nov 09, 2011 at 13:08 UTC
    Thank you very much for your help Tux!
    I changed now the printing of the header too so that I do not need to hardcode the fields anymore:
    my @columns = @{$csv->getline (*DATA)}; $csv->print (*STDOUT, \@columns);
    Thanks again!
    VE

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://937052]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (6)
As of 2014-12-21 02:11 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

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





    Results (101 votes), past polls