ucfirst()の動作についてなんですが、
ucfirst 'FOO' #=>'FOO'
勝手に余計な変更を加えられるのも困る気はするけど、直感的には'Foo'になりそうなもんです。
キャメルケースへの変換のためには常に↓のように書くようになりますか?
ucfirst lc 'FOO'