in reply to map a list
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);
If you wanted terse:
my %results = map { /^([^=]*)(?:(=)(#)?(.*))?/s; ($1, ($3 ? fn($4) : ($2 ? $4 : fn($1)))) } split(/,/, $string);
Update: Added terse snippet.
|
|---|