Maybe do is what you're looking for. In contrast to require, it does not keep track of what's already been loaded. In any case, as the process is running persistently, you'll have to have some mechanism that triggers the reloading of the settings. Several ways are conceivable:
- Check the modification date of settings.pl at every request that's being made, and reload it if its modification date has changed.
- Have a special URL that's associated with a routine that does the reloading (make sure the request is authenticated).
- Send the process (or process group) a signal (e.g. USR1 via kill), and have the signal handler trigger the reloading.
- ...
P.S. As you have things now, you may not actually have to restart Apache; killing the FGCI processes directly is usually sufficient, because mod_fastcgi (with a typical configuration) will simply respawn new processes if the old ones have vanished...