weblog of key_amb

主にIT関連の技術メモ

Perlで大文字/小文字の置換

uc/lc

全て大文字/小文字にする。

$ perl -e 'print uc "Goatex\n"'
GOATEX
$ perl -e 'print lc "I Love U\n"'
i love u

ucfirst/lcfirst

先頭一字だけ大文字/小文字にする。

$ perl -e 'print ucfirst "doraemon\n"'
Doraemon
$ perl -e 'print lcfirst "MELON\n"'
mELON

正規表現(\U, \L, \u, \l)で置換する

\Uは後ろに続くものを大文字にする。
\Lは後ろに続くものを小文字にする。

\uは後ろに続くものを先頭一字だけ大文字にする。
\lは後ろに続くものを先頭一字だけ小文字にする。

my $string = 'hoge fuga piyo';
$string =~ s/(\w+)/\u$1/; # Hoge Fuga Piyo
$string =~ s/(\w+)/\U$1/; # HOGE FUGA PIYO
$string =~ s/(\w+)/\l$1/; # hOGE fUGA pIYO
$string =~ s/(\w+)/\L$1/; # hoge fuga piyo

応用編: CamelCase, snake_case の変換

my $camel_string = 'CamelString';
$camel_string =~ s/^([A-Z])/\l$1/;
$camel_string =~ s/([A-Z])/_\l$1/g;
print "$camel_string\n"; # camel_string

my $snake_string = 'snake_string';
$snake_string =~ s/_([a-z])/\u$1/g;
$snake_string =~ s/^([a-z])/\u$1/;
print "$snake_string\n"; # SnakeString