in reply to fork issue

I'd do it differently. Try this:
#!/usr/bin/perl -l use strict; use warnings; use ModPerl::Util; use ModPerl::Const -compile => 'EXIT'; register_user(); my $pid = fork(); if( $pid == 0 ){ send_mail(); eval { exit; }; exit if $@ && ref $@ eq 'APR::Error' && $@ == ModPerl::EXIT; print "Still running"; } write_log(); sub register_user { print "Registering user." } sub send_mail { print "Mail sent..."; }; sub write_log { print "Written to log..."; };