in reply to Strange problem with Perl Compiler

But the Second gets compiled without any such errors. Why?
Mmm, probably because Perl is programmed to Do The Right ThingTM.
I know that's not a real answer, but I still don't understand why you bother about it anyway.
Do you have a specific problem with two modules like this? Do you just like to understand better how Perl is loading packages? Please give us some more information.

As I already pointed out in my last reply to your last question functions seem to be looked up at run-time, which has nothing to do whether they get imported at compile or run-time. Look at the following example:

shell# perl -we 'sub test { otherfunc(); }'
This executes without a warning about otherfunc which doesn't exists, because test is never called and so otherfunc() must never be located by perl.

Your way to only compile a module with perl -c module.pm looks strange to me - not the fact that it's not giving a warning.

PS: Please use <readmore> tags for code with this length. You should also put every file in a own <code> </code> container so they can be downloaded separately.