That's precisely the point: @INC is the list of paths that perl will search when it goes to load your module. If you put a code ref into @INC, perl will recognize it and execute it (rather than treating it as a path to search). By pushing your sub onto the front of @INC, you'll ensure that perl checks it first. By returning undef, you'll cause perl to keep looking until it finds the real path.
in reply to Re^2: Overriding the built-in require function (@INC)
in thread Overriding the built-in require function
The very end of the doc that tye linked, require, describes this in detail. The same @INC method works for use.