Don't worry about it. Let the user handle this, using standard Unix redirection. This is the easiest possibility for you, and probably the most flexible for users.
Ignore STDERR for now (if run from cron, that output will be mailed to the job owner), and use two-arg select to change the default output filehandle.
Re-open STDOUT and STDERR elsewhere:
open(STDOUT, '>daemon.log') or die "Can't open daemon.log: $!";
open(STDERR, '>daemon.err') or die "Can't open daemon.err: $!";
Skip the forking altogether. This may not be an option, but I don't see what it adds to the process, unless you're trying to get init as your parent. Then it makes sense. :)