Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

Converting a CSV list to a list of hashrefs naming the fields

by merlyn (Sage)
on Jun 26, 2001 at 23:19 UTC ( #91712=snippet: print w/ replies, xml ) Need Help??

Description: OK, there's been this recent discussion on comp.lang.perl.misc, and it's gotten perverse enough to drag one of the postings over to the monestary.

A simple mechanism to turn a list of comma-separated-values into a list of hashrefs, each hashref naming the fields from the comma-separated-values. When we got to using the term "hashificator", I knew it needed a wider audience. Enjoy!

According to Anno Siegel <anno4000@lublin.zrz.tu-berlin.de>:
> According to Randal L. Schwartz <merlyn@stonehenge.com>:
>
> [...]
>
> > More perversely perlish:
> >
> >     @game = map +{
> >       (qw/name score date/, split /,/)[0,3,1,4,2,5]
> >     }, @scores;
> >
> > Do Not Try This At Home. :)
>
> Ah... retro-hashification of the unwieldy.  I knew there had to
> be something like that.

...and it generalizes:

    my @keys = qw/name score date comment/;
    my @hashificator = map( ( $_, $_ + @keys), 0 .. @keys - 1);
    @game = map +{
        (@keys, split /,/)[ @hashificator]
    }, @scores;

Comment on Converting a CSV list to a list of hashrefs naming the fields
Download Code
Replies are listed 'Best First'.
Re: Converting a CSV list to a list of hashrefs naming the fields
by MeowChow (Vicar) on Jun 27, 2001 at 00:06 UTC
    Why not simply:
    my @keys = qw/name score date comment/; my @game; @{$game[@game]}{@keys} = split /,/ for @scores;
       MeowChow                                   
                   s aamecha.s a..a\u$&owag.print
      Yes, that was one of the alternatives, but the idea of doing it as a stream for a possibly larger pipeline suggested the use of a map.

      -- Randal L. Schwartz, Perl hacker

Back to Snippets Section

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (8)
As of 2015-07-29 22:22 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (269 votes), past polls