Well, I can imagine putting assignments to @ISA in a BEGIN block if you have the habit of putting other things in a BEGIN block.
I typically have my assignment to @ISA near the top of the file, before any method calls are done. And that never is a problem.
Perl has always tried to invalidate method caches on assignment to @ISA -- although in a dim past, there was a bug preventing this to happen. This was fixed in 5.004 or 5.005. Long enough ago to not care about anymore. Not that method cache has any reason to be relevant here; for that to be relevant, we need to have something like:
- Assign to @ISA.
- Call a method "X".
- Assign to @ISA so X resolves to a *different* sub.
- Call method "X" again.