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

Re: Combining flat file records

by GrandFather (Saint)
on May 09, 2006 at 00:25 UTC ( [id://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 (Abbot) 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
Domain Nodelet?
Node Status?
node history
Node Type: note [id://548111]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others studying the Monastery: (7)
As of 2024-04-23 10:07 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found