prototype &

run {
    my $block = shift;
    is(process($block->foo), $block->bar, $block->name);
};

って引数に関数渡せる。

これは perldoc perlsub の Prototypes の項目に載ってる

An "&" requires an anonymous subroutine, which, if passed as the first argument, does not require the "sub" keyword or a subsequent comma.

プロトタイプで & を第一引数に指定した場合その無名関数には sub つけなくても良い。

これは割と使えそうだ。

たとえば、STDERRとかになんか出力しちゃううざいモジュールを使ってtestを書いているときに

sub execute(&) {
    my ($out, $err);
    tie_output( *STDOUT, $out );
    tie_output( *STDERR, $err );

    my $res = shift->();

    untie *STDOUT;
    untie *STDERR;

    $res;
}

とか作っとくと

my $res = execute { $suck_module_output_stderr->method };

とかでSTDERRだすことなくそのモジュールのテストかける。いいのー。

grep とかな実装しかあんまりみないから新鮮に見えるのかな。

by typester / at 2006-10-16T22:21:00 / perl / Comment

OSXもうだめかもわからん

run_like が成功するときと失敗するときがあってこまった。

run_like input => 'results';

みたいなときなんかinputのフィルタがかからないときがあったりして失敗してるくさく、なんだと思ったら、うちのOSXの問題だったみたいだ。

use_ok を1個するだけのテストでも何回もやってるとこけたりする。ひどい。。

こけるときも毎回違う出力。

$ prove -lv t/04simpleuse.t
t/04simpleuse....dubious
        Test returned status 0 (wstat 10, 0xa)
FAILED--1 test script could be run, alas--no output ever seen

とかよくわからんのだったり、

$ prove -lv t/04simpleuse.t
zsh: segmentation fault  prove -lv t/04simpleuse.t

セグフォってみたり。。

$ prove -lv t/04simpleuse.t
Operator or semicolon missing before %opts at /System/Library/Perl/5.8.6/Pod/Usage.pm line 487.
Ambiguous use of % resolved as operator % at /System/Library/Perl/5.8.6/Pod/Usage.pm line 487.
Bareword "key3" not allowed while "strict subs" in use at /System/Library/Perl/5.8.6/Pod/Usage.pm line 482.
Bareword "opts" not allowed while "strict subs" in use at /System/Library/Perl/5.8.6/Pod/Usage.pm line 482.
Compilation failed in require at /usr/bin/prove line 12.
BEGIN failed--compilation aborted at /usr/bin/prove line 12.

こんなすごいのもでたよ。

再起動したらとりあえずなんか直ったくさいけど。もー、やばいわうちのmac。

HDDぶっこわれてんかなーとおもってfsckってみたけど問題なさげだったし。なんだろうほんと。

by typester / at 2006-10-16T20:18:00 / perl · osx / Comment

MySQLのダブルクオートとsqlt

MySQLのsqlにダブルクオートが含まれてるとsqltがこける。

なんだろう。シングルクオートに置換すると通る。

とはいえ、便利すなぁ。sqlt。

by typester / at 2006-10-16T13:02:00 / dbic · mysql · sqlt / Comment

出社。

by typester / at 2006-10-16T10:03:00 / life / Comment