Perlでprintした文字列を変数で受け取る

my $buf = ""; # この変数で受け取る
open VAROUT, ">", \$buf or die $!;
my $oldhandle = select VAROUT;
#----------------------------

# printしたら変数$bufに入る
print "ore";
print "ore";

#----------------------------
select $oldhandle; # 出力先を元に戻す
print "<<$buf>>"; # <<oreore>>と出力される

スカラー変数のリファレンスをopenすることで
出力を変数にリダイレクト(?)することができます。

PHPでのob_start()等のob_*系関数も簡単に再現できます。