Devel::Peek::Dump なんかは結果が標準エラー出力に表示されるだけなのでコード内で結果を使いたいと思うと標準エラー出力の出力先を変数へ書き換え、その後復元させてやる必要がある。
use strict; use warnings; use utf8; my $stderr; open my $temp, '>&', STDERR; close STDERR; open STDERR, '>', \$stderr; warn "hoge"; close STDERR; open STDERR, '>&', $temp; close $temp; print $stderr; # ”hoge” が出力される
こんな感じで取りあえずうまくいくんだけど、もっといい方法はないのだろうか。
tieを使うのは大げさな気がする- 結び付けられるクラスを用意しなくてはならない?
Tie::STDOUT系のやつ使えば良い?- あまり詳しくないので勘違いしているかも
open の第二引数
自分用メモ。
>は書き込み<は読み込み&はdup(2)してopenされる