# Compile foo use Foo; # Replace (mock) a function in Foo BEGIN { no warnings 'redefine'; *Foo::get_db_value = sub { return 2 } } # Compilation of Bar finds mocked function, not original function # (Foo was already loaded so is not recompiled) use Bar; # Test function is(Bar::bar_func(), 84, "bar_func works as advertised");