添削 #2
さて、第二回目の添削は、私がもっとも敬愛するPerlプログラマの小飼弾さん作であり、全Perlプログラマがお世話になるEncodeパッケージを選ばさして頂いた。
私の暇な時間のもて遊ばし方は、とにかく小飼弾さんの作られたコードを読むことに費やしている。
それは過去のバージョンのささいなコードすらも範疇に含まれる。
先日Encodeをバージョンアップされ、全てにperltidyを施されたとのことで、それは針の穴を眺めるように細部を読まさせて頂いた。
まずencodingのソースを読んで頂きたい。
elsif ( $country_language =~ /^zh_CN|chin(?:a|ese)?$/i ) { $locale_encoding = 'euc-cn'; }
これでは、zh_CN,chin,china,chineseの四つが引っかかるようになっている。
はたしてchinで引っかかる事は問題ないのだろうか?
念のために検証
[jank@localhost tmp]$ cat chin.pl #!/bin/perl use CGI; foreach (('zh_CN', 'chin', 'china', 'chinese')) { if ($_ =~ /^zh_CN|chin(?:a|ese)?$/i) { print "$_\n"; } } [jank@localhost tmp]$./chin.pl zh_CN chin china chinese
ためしにGoogle先生にお伺いをたてると
chin の検索結果のうち 日本語のページ 約 717,000 件中 1 - 10 件目 (0.25 秒)
日本ちんこまんこ学会 注 意. ●このサイトはいわゆる「アダルトサイト」ではありません。 当サイトの目的は エロ物件を観賞して笑ったりあきれたり脱力することであり、決して扇情的なコンテンツ を含むものではありません。 そういったものを期待されるとアテが外れます。 ... www.kt.rim.or.jp/~sokohaka/chin-man/ - 2k - キャッシュ - 関連ページ
中国とは関係ない。
elsif ($country_language =~ /^zh_CN|chin(?:a|ese)$/i ) { $locale_encoding = "euc-cn"; }
変更後も検証
[jank@localhost tmp]$ cat china.pl #!/bin/perl use CGI; foreach (('zh_CN', 'chin', 'china', 'chinese')) { if ($_ =~ /^zh_CN|chin(?:a|ese)$/i) { print "$_\n"; } } [jank@localhost tmp]$ perl ./china.pl zh_CN china chinese
はてなを切り捨てただけである。
ジャンク・オーグァィは小飼弾さん大好き