チャットのログ取得
しばらくログを取ってなかった分、保存しておこうと思ってログ取得スクリプトを走らせたけど、なぜかエラーになって取得できません。何箇所かデバッグプリントを入れて試してみると、どうも正規表現がうまくマッチしてない様子。元データのフォーマットが変わったかと思って、HTMLソースを見てみたけど、別に変わってない。で、よく考えたら。正規表現が結構複雑になってるので、変数に取り出して、
$regexp = qr/foo/; while (m/^$regexp$/gix) { bar(); }
ってするようにしたんだけど、このコードが間違ってたのが原因。ただしくは、以下のように、
$regexp = qr/foo/ix; while (m/$regexp/g) { bar(); }
正規表現を変数に代入する時点で、x
とi
オプションを付けておかなきゃいけなかったこと((i
オプションは不要かも))と、勘違いして先頭と末尾のアサーションを付けてたこと。そんなの付いてちゃマッチするはずが無いです。まったく、なにをボケたコーディングしてるんだか。これを直してもう一度トライすると、今度は大丈夫。きちんと取得できました。
あとは、リファラを正しく指定するように少しだけコードを修正、いままでは結構適当に送ってたからね。ユーザエージェント名もちょっと変更して、タイムアウトは30秒から15秒に変更。それとエラー、というか、本来意図しない結果が返ったときにdie
するべき場所で適切にdie
するように。一箇所、エラーが起きたときdie
するべき場所で、die
しないままで処理を継続してしまっていたので。