問:以下のスクリプトの出力を想像してみましょう(perlのバージョンは5.8以降、スクリプトの文字コードはutf-8とする)
use utf8;
print 1 if "あ" =~ /\p{IsAlpha}/;
print 2 if "あ" =~ /\p{Alphabetic}/;
print 3 if "あ" =~ /[[:alpha:]]/;
.
..
...
答: 123
.
..
ナンデヤネーン
..
...
http://d.hatena.ne.jp/moriyoshi/20090315/1237103809 と http://unicode.org/charts/#scripts とをにらめっこして、 恐る恐る lib/unicore/lib/gc_sc/Alpha.pl を開いてみると、そこには..
# (略)
return <<'END';
0041 005A
0061 007A
00AA
(略)
3041 3096
3099 309A
(略)
.....
知らんかった。ひらがなは(perlの正規表現の世界では)アルファベットやったんや... orz
ナンデヤネーン
ちなみに、 use utf8;を消して、スクリプトの文字コードをcp932にすると何も出力されず("あ"はアルファベットじゃない)、
utf-8にすると、"12"が出力されました("あ"はPOSIXで定義されるところのアルファベットじゃない(?))。
うーん...




