use POSIX qw/setuid setsid/; BEGIN { setuid scalar getpwnam 'qf3' or die $!; # Fork. my $pidFile = '/some/path/pid'; my $pid = fork; if ($pid) # parent: save PID { open PIDFILE, ">$pidFile" or die "can't open $pidFile: $!\n"; print PIDFILE $pid; close PIDFILE; exit 0; } } print "USER: ". getpwuid($<) . "\n";