tsucchi’s diary(元はてなダイアリー)

はてなダイアリー(d.hatena.ne.jp/tsucchi1022)から移行したものです

久しぶりに 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 も取れるってとこらしいよん。そのうち使うかも。