in reply to Re^3: Daemon, log4perl & stderr/stdout
in thread Daemon, log4perl & stderr/stdout

This is a good point. If you don't explicitly close(STDERR), it should stay at file descriptor 2 when you re-open it. For example:
close(STDIN); close(STDERR); open(STDERR, ">/tmp/foo"); print fileno(STDERR), "\n"; # prints 0
However, if the close(STDERR) call is removed, STDERR remains at file descriptor 2.

A quick test of Proc::Daemon indicates that STDIN, STDOUT and STDERR all have the expected file descriptors.