By adding a ? to the regex code my @result = map {m/(.*?)\s+:/} @list; I think it now works:
the delimiter is space before colon, hence "xxxxx: no space between data and colon" returns nothing as there is no valid delimiter
and on " : space before colon\n" it now returns the empty list as there is a valid delimiter and all spaces are stripped from the result, so nothing remains. Please, note that this is different from having an empty line to start with, which is to be dropped.
CountZero
"If you have four groups working on a compiler, you'll get a 4-pass compiler." - Conway's Law