Hokkaido.pm Casual#1に行ってきました

ぐだぐだになってしまい、ほんとゴメンなさいでした。
でも、次回(6/20)も予定してるのでよろしくね!
申し込みは、こちらから。

という訳で、なんで報告が遅れたかというと、
例のテストとか、ReverseProxyについて調べてました。

自分は、mojoで作ったCGIを、
perlbrewでインストールしたPerlで動かす方法を相談したのですが、
やっぱりスクリプトの先頭(*1)に使いたいPerlのフルパスを書くしかないらしいです。

(*1) シェバングって呼ぶらしい

それと、今月のカジュアルだったで賞と言えば、
「”hoge.pl”みたいなスクリプトのテスト方法は?」ですよね。

例えば、こういうスクリプト。
"test.pl"

use strict;
use warnings;

main() unless caller();

sub main {
    my $val = 2;
    print "${val} + 1 = " . add_one($val);
}

sub add_one {
    return $_[0] + 1;
}

__END__

これをテストするのに、こういうコードを書いてみる。
"test.t"

use strict;
use warnings;

use Test::More;

require_ok( 'test.pl' );
ok( add_one(1) == 2, 'sub add_one' );

done_testing();

で、これのポイントは、
main() unless caller();unless caller()で、
unless caller()を付けずにテストするとmain()が実行されてしまうけど、
これだと、
$ perl test.t
しても、main()が実行されない。

テストで実行されたくないコードをmain()に記述する必要があるけど、
テストが出来るならこの程度の制約は問題ないよね、っていう結論でした。
これを説明するのにライブコーディングしてくれたaloelightさんのvimが素敵だったので、
次回のテーマは、「Perlの開発環境」にした次第です。
(ライブコーディングしてくれたaloelightさんに感謝!)

という訳で、次回(6/20)の申し込みは、こちらから。

おしまい。

Leave a Comment