Module2 is in the same directory as Module1. As you can see from the error.log StatINC correctly identifies the module as requiring a reload, but the reload does not take effect until the calling module has been 'touched' and therefore reloaded. I looked at the code for Apache::Reload and as far as I could tell the only relevent difference was that the reload was done directly rather than through an eval. I changed my local StatINC to remove the eval and tried again to no avail.