標準エラー出力を標準出力にリダイレクト

方法がわからなかったので、perldocで調べてみると通常の openで
"&"をつければいいみたい。そこで dupシステムコールと同じとあるん
だけど、dupの意味が分からなかったでそちらも調べました。名前から
察するに単に複製って思っていたんですけど、既に開いていれば閉じて
複製するという具合のようです。

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

open STDERR, ">&", *STDOUT or die "Can't dup STDOUT";

warn "Output to STDOUT\n";
print "Also output to STDOUT\n";

こんな感じのプログラムを書きます。通常であれば

  % perl dup.pl > /dev/null

とやると warnのものは出力されますが、この場合はすべて /dev/nullに
出力されるため、何も表示されません。