Its interesting, so I did my part of checking. see the below code
perl -e 'BEGIN{close(STDERR)};open FH,">log"; die 'testing';'
in begin, the STDERR is closed, so no more STDERR(fd 2)
but when 'open FH' is seen, the kernel is trying to allocate the unused file descriptor from starting from 0, now 2 is free, so it is allocated.
when the die executes, it
might be a problem with die, it might be programmed to write to fd 2 always, regardless of pointing to STDERR or any other file.
after this code, you can expect the error to be logged in file 'log'.
'perldoc -f die' has no clues on this, it says that 'die prints to STDERR'
(assuming it is always fd 2) Interesting...