my %Data; open( IN, "<", "data.txt" ) or die "data.txt: $!"; while () { chomp; my ( $key, @values ) = split( /\s*[:|]\s*/ ); $Data{$key} = [ @values ]; } close IN;