sub unbracket { for (my $s = @_ ? $_[0] : $_) { s/^$//; return $_; } } my %hash = map unbracket, map { split /=/ } split /, /, $_; # Or just # my %hash = map unbracket, split /, |=/, $_;