use strict; use warnings; use Data::Dump::Streamer; my %users; while () { chomp; my ($user, @attributes) = split /\s*,\s*/; $users{$user} = [@attributes]; } print $_, " @{$users{$_}}\n" for keys %users; __DATA__ Fred, 17, male, Perl monk Joe, 23, male, Perl Monk Jane, 22, female, Java junkie #### Jane 22 female Java junkie Joe 23 male Perl Monk Fred 17 male Perl monk