勝手に小作り

dankogaiさんの404 Blog Not Found:勝手に添削 - Ajaxでデバッグしよう - @ITにてflookが必要なのかが論争になっているようなのでヒントだけ指し示した。

use strict;
use warnings;

open my $tokuhirom, '>>/tmp/child' or die $!;
open my $oppaisan, '>>/tmp/child' or die $!;

print $tokuhirom "tokuhirom\n";
print $oppaisan "oppaisan\n";

print $tokuhirom "tokuhirom\n";
print $oppaisan "oppaisan\n";

print $tokuhirom "tokuhirom\n";
print $oppaisan "oppaisan\n";

close $tokuhirom;
close $oppaisan;

この結果が以下の通りである。

tokuhirom
tokuhirom
tokuhirom
oppaisan
oppaisan
oppaisan

私が言うのもおこがましいですが、子種がミックスされないので子供が出来ない。

oppaisanが攻めにまわると

use strict;
use warnings;

open my $tokuhirom, '>>/tmp/child' or die $!;
open my $oppaisan, '>>/tmp/child' or die $!;

print $tokuhirom "tokuhirom\n";
print $oppaisan "oppaisan\n";

print $tokuhirom "tokuhirom\n";
print $oppaisan "oppaisan\n";

print $tokuhirom "tokuhirom\n";
print $oppaisan "oppaisan\n";

close $oppaisan;
close $tokuhirom;

逆になる

oppaisan
oppaisan
oppaisan
tokuhirom
tokuhirom
tokuhirom

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

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


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

添削 #1

ここを添削道場として利用する。

MLD - Yappo::Tensaku
はてさて、まだテストスイーツを書き上げていないが、ここまでお願いされてしまったら三つ子の魂百まで、もとい仏の顔も三度であるから添削依頼に応える事とする。


諸君もご存知のとおり、このモジュールは着メロ・着うたのファイルから曲名やアーティスト名を読み出すPerlモジュールである。
しかしパッケージ名がMLD-Infoと命名されている。


洞察力の高い諸君ならば私の言いたいことがわかるであろう。


そう、MLDとはNTT DoCoMoの着信音ファイルで使用される拡張子のことである。
本モジュールで対象となるファイル形式は書くキャリアに対応したものとなっているためモジュール名としては不適切であるのだ。


Chakumero::Infoなどのアイデアもあろうが、すでに登録商標として予約されているためモジュール名としては相応しくない。

KeitaiChakusinonFile::Info

見てのとおりモジュール名を書き換えただけだ。


ジャンク・オーグァィは名付け親