Did you mis-read? I have a BOOT: section (an XS keyword), not a BEGIN sub.
END is called for each request if the module was loaded by the Apache child process. If it is preloaded by the server process (e.g. PerlModule line in the httpd.conf file) then the END is only run once when the server shuts down. This is fine, except that it isn't possible for a source filter module, which, as I said, is necessarily loaded by the child when loading the script.
Unless, of course, you have the server pre-load the script (?)
Anyway, I wanted a more "natural" solution that doesn't require the user to have loaded the script/module at some particular time.