#!/usr/bin/env perl
use strict;
use warnings;
use autodie;
use constant {
IN_FILE => 'pm_1200636_text.txt',
HEADER => 0,
KEY => 1,
VALUE => 2,
};
my %parsed;
{
open my $fh, '<', IN_FILE;
my $name;
while (<$fh>) {
my @fields = split;
if ($fields[HEADER] eq 'name') {
$name = $fields[KEY];
next;
}
if ($fields[HEADER] eq 'device') {
push @{$parsed{$name}{$fields[KEY]}}, $fields[VALUE];
next;
}
}
}
# For testing only
use Data::Dump;
dd \%parsed;
####
$ cat pm_1200636_text.txt
name Brian
shirt yellow
socks black
device ipad 2001
device ipad 2001
device ipad 2001
tag no
tag 0
name Andrew
shirt orange
socks black
device ipad 2009
tag no
tag 0
name ryan
shirt blue
socks black
device ipad 2005
device cell 2009
tag yes
tag 1
##
##
{
Andrew => { ipad => [2009] },
Brian => { ipad => [2001, 2001, 2001] },
ryan => { cell => [2009], ipad => [2005] },
}