どんなことでも

この人 blog を書くのだろうか?

perl Expect

2007-12-13 22:07:26 | perl
perl の Expect を使ってみた。でも、動作ログが取れません。マニュアルのリファレンス部分には
$object->log_file("filename" | $filehandle | \&coderef | undef)
と書かれていて、ファイルハンドルを使えるように読める。だが、例の部分には
 1. ファイル名を直接渡す方法」
 3. 関数を呼ぶ方法
 4. 出力を解除する方法
が載っているが、
 2. ファイルハンドルを使う方法
だけ書かれていない。試しに書いてみると
#! /usr/bin/perl -Tw

use lib qw(...略...);

require 5.6.0;
use Expect;
use strict;

$ENV{PATH} = "/bin:/usr/bin";

# log ファイルを開く
open($main::LOG, '>', "log_log");
printf "ref \$main::LOG is %s\n", ref $main::LOG;

my $exp = Expect->spawn("ls", "-l") or die "Cannot spawn ls: $!\n";

# $exp->debug(3);
# $exp->exp_internal(1);
$exp->expect(3 , # timeout
[
qr/.*/s => sub {
$exp->log_file($main::LOG);
$exp->print_log_file("--- ls command. ---");
$exp->send("ls\n");
exp_continue;
}
],
[ timeout => sub { print "timeout?\n"; } ],
);
これを実行
> ./test
ref $main::LOG is GLOB
Given logfile doesn't have a 'print' method at ./test line 22
Exit 255
駄目じゃん。
ソースを見ると、ref($file) が 'CODE' だとファイルハンドルと認識するようだが、私のファイルハンドルは GLOB となっている。
う~ん、CODE って何? GLOB って何?(「型グロブ」の「グロブ」?型グロブって何?) という状態で数時間固まっております。
さて、ファイル名を与えると正しく動くことは確認済みなんだが、どうするかなぁ。ファイルハンドルを持ち回した方が使いやすそうなのだが。
誰か教えて~。昔入っていた perl な ML が分からなくなってしまいました。

ウィルス

2007-12-13 02:12:59 | ひとりでできるもん!
「2007年はウイルス激増、50万件で過去20年分に匹敵」、エフ・セキュア
カスケードウィルスとかのように、寄生するウィルスは少なくなった気がしますね。寄生しなきゃウィルスでない気もしますが。
エフ・セキュア、セキュリティーで有名だから「F-Secureインターネットセキュリティ 2008」も結構信用できる気がするんですけど、いくら20% OFF と雖も重いとねぇ...

只今、12/13 2:10 teacup のメンテナンスは終了したようですね。