It could be that the detached process gets its working directory modified when it gets detached. Are you using relative or absolute paths for the files you are dealing with?
You can probably easily see the reasons for failure by using the standard:
my $filename = 'somefile';
open HANDLE, '>', $filename
or die "couldnt open $filename for writing $!";
Of course you should appropriately change the '>' if you are doing other file operations. Any STDERR from cron jobs should be automatically sent to the cron owners email, and that should tell most of the story.