#!/usr/bin/perl open MY_PID, "> /tmp/do_stuff.pid" or die "can't write to /tmp/do_stuff.pid: $!"; print MY_PID $$; close MY_PID; # rest of code #### #!/usr/bin/perl open PID, "/tmp/do_stuff.pid" or spawn(); chomp(my $pid = ); close PID; kill -HUP => $pid or spawn(); sub spawn { fork and exit; exec "/usr/bin/perl", "my_prog.pl"; }