
178
|
第
9
章
新的大小写转换特性对于
İ
stanbul
之类加点的字符串不起作用。因为其中
I
的
小写版本其实是一个组合了点号的
i
,类似
i
。你可以借助
Unicode::Casing
模
块完成类似的复杂转换操作。
这些大小写转换操作符其实也可以用内置函数
lc
、
uc
、
fc
、
lcfirst
以及
ucfirst
来实
现:
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
元字符转义
还有一个类似大小写转换的转义操作。
\Q
会把后续字符串中出现的所有元字符自动转
义为本意字符。比如下面的代码,想把名字前出现的所有左括号字符去除,于是写成
这样:
if ( s/(((Fred/Fred/ ) { #
编译时就会提示错误!
print "Removed parens\n";
}
上面的代码在编译时就会提示错误,所以必须把每个括号转义为字符本身:
if ( s/\(\(\(Fred/Fred/ ) { #
编译通过,但看起来很凌乱!
print "Removed parens\n";
}
简直就是烦人。所有的反斜线把模式的结构拆得支离破碎。借助 ...