まくまくPerlノート
大文字と小文字を置換する
2008-03-13

置換演算子 s/// を使用した文字列の置換時に、置換文字列(後ろの文字列)の中に \u エスケープを置くと、その直後の 1 文字を大文字に変換することができます。

$_ = 'aaaAAA bbbBBB cccCCC';
s/(\S+)/\u$1/g;  # 'AaaAAA BbbBBB CccCCC'

置換文字列の中に \L エスケープを置くと、その後ろに続くすべての文字を小文字に変換することができます。 \L\u を組み合わせて使用すると、単語の先頭の文字だけ大文字にするといったことができます。

$_ = 'aaaAAA bbbBBB cccCCC';
s/(\S+)/\u\L$1/g;  # 'Aaaaaa Bbbbbb Cccccc'

大文字、小文字を操作するためのエスケープ文字には以下のようなものがあります。

  • /U – その後の文字をすべて大文字にする
  • /L – その後の文字をすべて小文字にする
  • /E – 上記の変換をここまでで止める
  • /u – 次の 1 文字だけ大文字にする
  • /l – 次の 1 文字だけ小文字にする

実はこれらのエスケープ文字は、ダブルクォート文字列の中ならいつでも使用できます。

my $name = 'michael';
print "Hi, \u\L$name\E!\n";
2008-03-13