標準出力をキャプチャする

printで出力された内容をテストしたくて調べてたけどキーワードがよくわからんくて調べるのに時間かかった。IO::Captureでやりたいことができるっぽい。

use strict;
use warnings;
use IO::Capture::Stdout;

my $capture = IO::Capture::Stdout->new;
$capture->start;
print 'foo';
print 'bar';
$capture->stop;

my @out = $capture->read;
for (@out) {
    print "this is $_\n";
}
# this is foo
# this is bar