Perl入門ゼミ

テキスト処理、Linuxサーバー管理、Web開発ならPerl
  1. Perl
  2. モジュール
  3. here

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とはテキスト処理の記述性とパフォーマンスに優れ、正規表現が言語に組み込まれているプログラミング言語です。
  • Linuxサーバーでのフィルタリングプログラム、複数行の文字列を処理、ファイル内容の検索・置換などが得意
  • Perlはgitopensslなど広く普及したUnix/Linuxミドルウェアの補助ツールとして採用実績あり。後方互換性とポータビリティの高さがひとつの理由と推測。
  • 大量のテキストを扱うWeb開発も得意。ロングテールSEOを意識したWebサイト、アドテクやソーシャルゲームでの50ms以内のJSONの生成など。