
166
9 章 正規表現によるテキスト処理
用できます。
my $start = "Fred";
my $uncapp = lc( $start ); # fred
my $uppered = uc( $uncapp ); # FRED
my $lowered = lc( $uppered ); # fred
my $capped = ucfirst( $lowered ); # Fred
my $folded = fc( $uncapped ); # fred
9.1.7
メタクォート
大文字
/
小文字変換に似ているエスケープがもう
1
つあります。
\Q
は、文字列中のメタキャラ
クタをすべてクォートします。名前の前にあるリテラルのカッコを取り除くパターンを次のように
書いたとしましょう。
if ( s/(((Fred/Fred/ ) { #
コンパイルされない
!
print "Replaced name\n";
}
カッコをリテラルとして扱うためには、クォートする必要があります。
if ( s/\(\(\(Fred/Fred/ ) { #
コンパイルされるが見にくい
!
print "Replaced name\n";
}
バックスラッシュがいくつも並ぶと読みにくくてイライラします。このようなケースでは
\Q
を
使えば、それ以降のすべてをクォートしてくれるので、パターンが読みやすくなります。
if ( s/\Q(((Fred/Fred/ ) { #
少し読みやすくなった
print "Replaced name\n";
}