in reply to close on STDERR

It's not needed for simple situations. The handle will be closed when the script exits, or when STDERR is opened elsewhere..

It is good practice, however, to localize global handles, in which case I usually close the local instance:

{ open local(*STDERR), '>>', $errlog or die q(Can't redirect error: ),$!; print STDERR "Permission/Error Log\n", scalar( localtime), "\n\n"; # ... close STDERR or die $!; }
I changed your open mode for the log to append, so old entries are not truncated away.

After Compline,
Zaxo