Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Re: Combining flat file records

by GrandFather (Sage)
on May 09, 2006 at 00:25 UTC ( #548111=note: print w/replies, xml ) Need Help??


in reply to Combining flat file records

Another way to do it:

use strict; use warnings; my %data;
map {chomp $_->[2]; $data{$_->[0]}{$_->[1]}{$_->[2]} = ''} [split /\s+ +/] for <DATA>;
$data{$_->[0]}{$_->[1]}{$_->[2]} = '' for map [split], <DATA>; for my $num (reverse sort keys %data) { print "$num\t$_\t", (join ",", keys %{$data{$num}{$_}}), "\n" for keys %{$data{$num}}; } __DATA__ 848 05/23/06 11:00 848 05/23/06 12:30 848 05/23/06 13:00 848 05/23/06 14:00 848 05/25/06 11:00 848 05/25/06 12:00 261 05/24/06 11:00 261 05/24/06 12:30 261 05/24/06 13:00 261 05/24/06 13:00 261 05/24/06 13:00 261 05/24/06 13:00

Prints:

848 05/23/06 12:30,11:00,14:00,13:00 848 05/25/06 11:00,12:00 261 05/24/06 12:30,11:00,13:00

Update: apply jwkrahn's neat round of golf


DWIM is Perl's answer to Gödel

Replies are listed 'Best First'.
Re^2: Combining flat file records
by jwkrahn (Monsignor) on May 09, 2006 at 03:38 UTC
    map {chomp $_->[2]; $data{$_->[0]}{$_->[1]}{$_->[2]} = ''} [split /\s+ +/] for <DATA>;
    Could be written more simply as:
    map {$data{$_->[0]}{$_->[1]}{$_->[2]} = ''} [split] for <DATA>;
    Or without using map in a void context:
    $data{$_->[0]}{$_->[1]}{$_->[2]} = '' for map [split], <DATA>;
    :-)

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://548111]
help
Chatterbox?
[ambrus]: I may have ruined my good keyboard on Friday by spilling tea in it. I hope it's just temporarily malfunctioning until it dries out, but I fear it might be permanently damaged.
[holli]: did you soak the controller boardlet?
[Eily]: could be worse, you might have ruined your tea with the content of the keyboard
[holli]: if you didnt you should be fine
LanX .oO( holli needs standards which are standardized!!)
[holli]: do i?
[holli]: oh for the keyboard

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (9)
As of 2017-11-21 13:55 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    In order to be able to say "I know Perl", you must have:













    Results (302 votes). Check out past polls.

    Notices?