共通関数のテストをしてる、みたいなことを書きましたが。
その中の関数で、エラー時にそのまま
print "$!";
みたいなことやってる関数がありました。
いや・・・標準出力以外に出力したくなったらどうするんですか。
Web サイトとかだとそのままユーザの画面に出力ですか。
ファイルハンドル受け取ってそこに出力できるようにするとか、もっと testability というものを考えて(ry
なんてことを思ってましたが、結構どうにでもなるんでした。そういえば。
my $stdout;
{
local *STDOUT;
open(STDOUT, ">", \$stdout) or die "can't open STDOUT: $!";
print "hoge"; # "hoge" は $stdout に格納される
}
print "fuga"; # ここでは標準出力に吐かれる
こんな感じ。
ラクダ本だかなんだかでちゃんと読んだはずなのに忘れてた。
ちなみにうまくいってるか確認しようとして、local なスコープ内で
print $stdout;
とかやって「あれー?うまくいかないなー?」とかやって数分格闘してた。
色々まだまだだ。
http://search.cpan.org/~sso...