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している。