http://qs321.pair.com?node_id=224874

John M. Dlugosz has asked for the wisdom of the Perl Monks concerning the following question:

I read a file into an array, and want to take just the first thing on each line and return a list of those. I was overwhelmed with TIMTOWTDI. I typed and backspaced 3 times already. Why? Because there should be a nicer way to write it. But it turned into a distraction. If there was only one obvious way to do something, I would have just done it and be done with it. But Perl can be "fun" besides...

So, I thought I'd throw it out as a challange.

Given: variable @list contains a bunch of lines of the form

xxxxx : yyyyy blah blah
Where the :stuff is optional, and the line may be blank in which case it should be ignored. Return a list containing just the xxxxx parts. Specifically, remove blank lines, and truncate each line at the first : (if present) and get rid of trailing whitespace after the xxxxx part (including the possible "\n".

Any takers?

—John