ブログトップ 記事一覧 ログイン 無料ブログ開設

サンプルコードによるPerl入門

2009-03-04

IO::Capture 標準出力、標準エラー出力の自動試験

 標準出力を試験した場合がときどきあります。対話的なプログラミングを作成したり、print をソースコードの中で使用している関数を試験したい場合などです。

 標準出力を取得するには、IO::Captureというモジュール使用します。標準出力が取得できれば、いつもどおりの自動試験を行うだけです。

 IO::Captureは標準モジュールではないので、

cpan IO::Capture

でインストールします。

1. 標準出力を取得する

 標準出力を取得するには、IO::Capture::Stdoutモジュールを使用します。IO::Captureモジュールをインストールすると一緒についてきます。

 startメソッドでキャプチャ開始、stopメソッドでキャプチャ終了です。そのあとに、readメソッドを呼び出すと、キャプチャした標準出力を取得できます。

use IO::Capture::Stdout;

my $capture = IO::Capture::Stdout->new;
$capture->start;
print "aaa";
$capture->stop;
my $stdout = $capture->read;

 複数回の標準出力を取得したい場合は以下のように記述できます。

$capture->start;
print "aaa";
print "bbb";
$capture->stop;
my @stdout = $capture->read;

 リストコンテキストで、readを呼び出すと、("aaa", "bbb") が取得できます。

2. 標準エラー出力を取得する

 IO::Capture::Stderr を使って同じようにできます。

use IO::Capture::Stderr;

my $capture = IO::Capture::Stderr->new;
$capture->start;
print STDERR "aaa";
$capture->stop;
my $stderr = $capture->read;


Perl逆引き辞典/自動試験へ

ZIGOROuZIGOROu 2009/02/23 03:03 ブログタイトルすぐしたのリンクのテキストが CAPN になってるよ!!!

perlcodesampleperlcodesample 2009/02/28 02:13 AとPが入れ替わってます。今日気づきました。
ZIGOROuさん、ありがとうございます。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/perlcodesample/20090304/1235217752