2009年11月6日金曜日

[Perl] 既存の関数を上書きする

主にPerlのテストコードを書くとき、
既存の関数にテスト用の振る舞いをさせたいことがたまにある。
その時はこんな感じで上書くべし。
sub hoge { print 'original'; }

no warnings 'redefine'; # warningが気になる場合
*hoge = sub { print 'override'; };
日付を扱っているコードのテストを書くときはこんな感じで。
use Date::Calc;

*Date::Calc::Today = sub { return (2000,1,1) };
my @today_dummy = Date::Calc::Today();

0 件のコメント: