我希望 Perl 只有在 STDOUT 不同时才写入 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 是否指向同一个“事物”(描述符?)?