use strict; use warnings; my %user_info; my @fields = qw(name email foo bar); while () { chomp; my ($user, $attribs) = split /\s+/, $_, 2; my %record; @record{@fields} = split /\|/, $attribs; $user_info{$user} = \%record; } foreach my $user (keys %user_info) { print "Username:$user Real Name:$user_info{$user}{name}\n"; }