Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
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
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 making s'mores by the fire in the courtyard of the Monastery: (4)
As of 2014-07-12 16:28 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    When choosing user names for websites, I prefer to use:








    Results (240 votes), past polls