添削 #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

はてなを切り捨てただけである。


ジャンク・オーグァィは小飼弾さん大好き