久しぶりに STDOUT を捕まえてみた
STDIN/STDOUT を使うテストとか STDIN/STDOUT を使うテスト その2の続きみたいな話。
Mint's log: Perl Seminar NYミーティング5月
Perlプログラムの中からコマンドを実行し、標準出力・エラーを変数に保存するCapture::Tinyの紹介。
つーことで、Capture::Tiny というモジュールがあるらしいです。
いつもの例だとこんな感じ。
#!/usr/bin/perl use strict; use warnings; use Test::More tests => 1; use Capture::Tiny qw(capture); sub add { my( $a, $b ) = @_; print $a + $b; } my ($stdout) = capture { add(1, 2); }; is($stdout, 3);
記述は簡単で直感的ですね。よさげです。
で、このモジュールがすごいのは、system()とかに渡した STDOUT/STDERR も取れるってとこらしいよん。そのうち使うかも。