my @result = map { (/([a-z])$/ ? qq{$1=>fn($2)} : (/([a-z])=([a-z])$/ ? qq{$1=>$2} : (/([a-z])=\#([a-z])$/ ? qq{$1=>fn($2)} : q{???} ) ) ) } split m{,}, $str;