16.5 出力をフィルタ処理する

自分のプログラムの出力を後処理する必要があるが、そのための独立したプログラムを作成したくない。

  • 暗黙的にforkが行われる形式でopenを使用して、自分のプログラムにフィルタを接続する。
head(100);
while (<>) {
  print;
}

sub head {
  my $lines = shift || 20;
  return if $pid = open STDOUT, "|-";
  die "Cannot fork: $!" unless defined $pid;
  while (<STDIN>) {
    print;
    last unless --$lines;
  }
  exit;
}