How does the subroutine "just includes another file"? Are you using use or require? Or are you opening the file and reading it each time the subroutine is called?
You can use do to execute the code from a file; unlike require it doesn't check to see if the file has already been loaded.
(More generally, one could extract the logic from Apache::StatINC to create an importable require() function that did the same check-for-changes trick to reload the code only when needed; I'm surprised this hasn't already been done.)