My personal suggestion, would be to do a split or regex on it. I would do a split, but I'm a bit silly. The thing is, if a colon starts a comment, then there can be no colon's within the "good string". what I mean is, if the line has:
she said: how are ya :this is the comment
then "she said" would be the only thing that would not be a comment. But, This is how I would do it:
($goodinfo, $comment) = split(/:/, $_) # you can replace $_ with the variable you use
print FH "$goodinfo\n";
obviously, the above line will need modifications in order to suite what it is you are doing, but split line works by searching for a colon, if it finds one, it sticks the stuff on the left of the colon, into the first variable, and the stuff on the right in the second variable (those that are in parenthesis). You could have it return an array, also, and just do a pop on the array, but in that way, only the data after the very last colon in the string would be ignored. Let me know what you come up with.