map{/([^:]*?)\s*(:|$)/;$1||()}@list;
Back to 36 chars. ;)
blokhead | [reply] [Watch: Dir/Any] [d/l] |
Yea, that's what I noticed when I decided to throw it out as a golf: stopping at the colon or the end-of-line complicates things in a slightly subtle manner. Doing it in multiple passes it's no big deal: chomp first, then delete the tail end stuff, then throw it away if empty. But that's not elegant, and it doesn't just "fit together" as a composition of functions (one feeding the result to the next outer one).
I think this also has an interestingly high punctuation to alpha ratio.
I see you make sure the pattern always matches, so $1 is always OK (just empty).
—John
| [reply] [Watch: Dir/Any] |