ここ二日ばかり、仕事のプログラムではまっていたのです。サーバとクライアントの間で、通信をするのですが、メッセージがどんどん長くなるのです。何故!?
プログラムは perlで書いています。本当はRubyの方が100万倍簡単に書けるから好きなんだけれど、お仕事プログラムは「他の人がメンテできないから」という理由で、Rubyは控えめにしないといけないのです。とほほ。そして、このバグ……二日にわたって僕を悩ましてくれたそれの正体は……。
実に、脱力系のバグでした。メッセージングは、パッケージにまとめてあるのですが、そのパッケージの中で、
my $rbuf = "";
foreach my $msg (@_)
{
$buf .= $msg;
}
$ipc->send($buf, $timeout);
ヘンスウメイヲマチガエテイルヨ…… oTLforeach my $msg (@_)
{
$buf .= $msg;
}
$ipc->send($buf, $timeout);
おまけに、普通はパッケージの先頭で、'use strict;'しているのに、このファイルだけ、それが落ちていました oTL
アホです、アホ過ぎます。perlで何か書くときには、とにかく、闇雲に、'use strict;'しなければならないのです。特に僕みたいなアホの場合は…… oTL
himazu
#!.../perl -w
の-wもお忘れなく。
hiro
Perlのナニがイヤって、こういうところ。(manpageより抜粋。)
...
Did we mention that you should definitely consider using
the -w switch?
BUGS
The -w switch is not mandatory.