gsub にブロックが使える、というのを知らなかった。
標題のようなことをしようとする場合、
line.gsub(/(\.[a-zA-Z0-9_-]+)(?:[^;])/) {|w| w.downcase}
で、 . で始まる英数字の文字列を全て小文字にできる。