tieしたSTDOUTでのprint

tieを利用してSTDOUTの出力を弄る
http://d.hatena.ne.jp/sugyan/20090715/1247613596

を見て、STDOUTをtieしたあと、tieする前のSTDOUTにprintするにはどうしたらいいんだろうと思った。STDOUTをtieする前にdupしておくとかでいいのかな?

#!/usr/bin/perl
use strict;
use warnings;

package Stdout::Capture;

sub TIEHANDLE {
    my ( $class, $stdout_fh ) = @_;
    open my $fh, '>&', $stdout_fh;
    bless \$fh, $class;
}

sub PRINT {
    my ( $this, @list ) = @_;
    my $fh = ${$this};
    print $fh "cap: ", @list;
}

package main;

tie *STDOUT, 'Stdout::Capture', *STDOUT;
print "test\n";
open my $fh, '>&', $glob;

で STDOUTをdupしている。