in reply to Detecting undefined subroutines at compile time

As far as I can tell, Perl cannot detect undefined subroutines at compile time.
Sure it can. Why do you think Perl has forward declarations? It's just that if you write f(..), you're telling Perl, well, I'm going to call a function f, but you may not have seen it yet. But I promise, by the runtime, it'll be there.

You want compile time checking of subroutine existence? Leave off the parens.