use utf8すると\dで全角数字がマッチする
#!/usr/bin/perl use strict; use warnings; { use utf8; my $res = ('123' =~ /^\d+$/) ? "match" : "unmatch"; print "use utf8 ... $res\n"; } { no utf8; my $res = ('123' =~ /^\d+$/) ? "match" : "unmatch"; print " no utf8 ... $res\n"; }
これを実行すると、こうなる。
use utf8 ... match no utf8 ... unmatch
これをDBのintegerなカラムにそのまま突っ込むと、当然のように0になってしまう罠。
他にも、use utf8してると全角アルファベットが\wにマッチしたり、そのへんの挙動が変わる。危ないところだった。
多分こういうのは常識なんだろうけど、こういう「日本のPerlにおける今時の常識」みたいなのをまとめた書籍が一冊欲しいな。