有warn 4什么不同print STDERR 4?
perl -e 'local *STDERR; warn 4'
(输出仍然是STDERR)
perl -e 'local *STDERR; print STDERR 4'
(这里没有输出)
warn触发器$SIG{__WARN__}.warn不使用$\或$,.warn显然使用了原文中的文件句柄STDERR,正如您所演示的那样[1].不完全的.您的代码也可以证明warn直接使用fd 2,但这被证明是错误的
close(STDOUT);
close(STDERR);
open(STDERR, '>file');
warn(fileno(STDERR)."abc");  # 1abc