while (<>) { s/\s+\z//; ... } #### / ^ \s* ([*#]+:?) \s* (.*\S)? \s* $ /sx