route127の日記: 30代になりました
中高年の社交場に降り立つピチピチ30代ヒロインの話とかではなく、ジメジメしてきてPerl5のマイナーバージョンアップの季節なのを思い出しただけ。
そういえば九州北部はまだ梅雨入りしてないみたいなことをラジオで聞いたな。
perl5.30での変更点見てるとUnicode 12.1(新元号)対応とか正規表現周りとかで手が入ってるらしい。
トルコ語アルファベットの辺りは以前grep高速化の話題でも出てきてたな。
そういえばPCREはGNU grepの2.19以降で問題となっていた速度低下の問題はなかったんだろうか。
他に気になったのが正規表現におけるUnicode特性値指定のワイルドカードに部分的に対応で、ベンガル数字やタイ数字にもマッチする正規表現として
qr! \p{nv= /(?x) \A [0-5] \z / }!
が紹介されてた。
activeperlはまだ5.30版でてないのでstrawberryperlでタイ語のフォントもないし漢数字にでもマッチさせようと
use utf8;
$test = '一二三四五';
print $test =~ qr!\p{nv= /(?x) \A [0-5] \z /}!;
などと書いてみたが
Can't find Unicode property definition "nv= /(?x) \A [0-5] \z /" in regex;
とエラーが出た。正規表現を
print qq/match\n/ if $test =~ qr/\p{NumericValue=5}/;
や
print qq/match\n/ if $test =~ qr/\p{nv=5}/;
と書き換えてみるとマッチしているようなので特性値の指定が悪いわけではなさそう。
埋め込み修飾子(ここでは(?x))を使って0から5にマッチさせようとしてるのは分かるのだがなぜ動作しないのかまで分からなかった。
というか漢数字に関してはPerl5.24でも既にNumericValueでマッチさせられた。
ベンガル数字で思い出したが、以前2003年の第22回国際度量衡総会(CGPN)で小数点のピリオドへの統一を目論む英語圏連合がストーリになって(小数点はコンマかピリオドか)たり、日本において算用数字の位取りのコンマを何桁毎に挿入するかの話題があったりしたが、この辺りの事もUnicodeの共通ロケールデータ集に基づいたモジュールが出ていて、桁区切りについてはCLDR v29に準拠したCLDR::Numberが存在する。
同じスペイン語圏でもイベリア半島とメキシコでは記法が異なるところなど面白い。
(地理的に北米に近いことから英語圏の影響を受けているのだろうか。)
またスイスでは言語に関わらずアポストロフィで統一されているらしい。
スイス以外に南アジアへの言及もあって、
インド、バングラデシュなど南アジアではもっと複雑です。
上の例で示すと、「12,34,567.89」となります。
小数点が「.(ピリオド)」で桁区切りが「,(カンマ)」なのは日本型と同じですが、桁の区切り方が独特で、最初は3桁で区切りますが、その後は2桁ごとに区切ります。
とベンガル数字の特徴的な桁区切りが紹介されていたが、この辺もCLDR::Number::Format::Decimalで対応しているようなのだが、ベンガル文字のフォントを入れて試すまでに至っていない。
ところで今月初めにmacOSが次回以降Perl等スクリプトの処理系やランタイムを同梱しなくなるという話を読んでWin10でPython使いやすくなるのとは対照的だと思ってたが、随分前からFreeBSDがPerl同梱してないとかいう話もあるのか。
UNIX系OSではデフォルトでPerlがインストールされているというのも今は昔なんだな。
30代になりました More ログイン