STDOUTが同じでない場合にのみ、PerlにSTDERRへの書き込みをお願いします。たとえば、STDOUTとSTDERRの両方が出力をターミナルにリダイレクトする場合、STDERRを出力したくありません。
次の例(outerr.pl)について考えてみます。
#!/usr/bin/perl
use strict;
use warnings;
print STDOUT "Hello standard output!\n";
print STDERR "Hello standard error\n" if ($someMagicalFlag);
exit 0
今これを考えてください(これは私が達成したいことです):
bash $ outerr.pl
Hello standard output!
ただし、ファイルにリダイレクトする場合は、次の情報を取得したいと思います。
bash $ outerr.pl > /dev/null
Hello standard error
逆の場合も同様です。
bash $ outerr.pl 2> /dev/null
Hello standard output!
out / errの両方を同じファイルにリダイレクトすると、outのみが表示されます。
bash $ outerr.pl > foo.txt 2>&1
bash $ cat foo.txt
Hello standard output!
では、OUTとERRが同じ「もの」(記述子?)を指しているかどうかを評価/決定する方法はありますか?