my %results = map { my ($x, $y) = split(/=/, $_, 2); if (defined($y) && $y =~ /^#(.*)/) { $y = fn($1); } elsif (!defined($y)) { $y = fn($x); } ($x, $y) } split(/,/, $string);