#!/usr/bin/perl use strict; use warnings; use feature qw/say/; my %parsed = (); while() { chomp; my ($key, $values) = split "=", $_, 2; my @values = split ",", $values; $parsed{$key} = \@values; } foreach my $key (sort keys %parsed) { say "$key: "; foreach my $value (@{ $parsed{$key} }) { say "\t$value"; } } __DATA__ key1=value1 key2=value2,value3,value4,value4,value5,value6,value7,value8,value9,value10 key3=value11,value12 #### $ perl 1119309.pl key1: value1 key2: value2 value3 value4 value4 value5 value6 value7 value8 value9 value10 key3: value11 value12 $ #### $parsed{$key} = \@values; # ... foreach my $value (@{ $parsed{$key} }) {