As a wild guess, I think your sin was to use a common name like test. If I look into my environment for a Perl module named test, I got:
$ which_pm test
test 1.25 /usr/local/lib/perl5/5.8.8/test.pm
To tell the truth, it is not exactly test, but the Test module. But this is Cygwin running over a case-insensitive Windows file system, and the Perl interpreter is satisfied with this answer here. (I think the same will happen with other Perls running over Windows OSes.)
If I say use test and no "test.pm" is there to be loaded, the one inside the core will make the loading succeed, but this is not what I intented, right? When you told explicitly to include "." in the @INC, your module has been found. So, a good advice is to not name your modules so that they trump over core modules (and take into account the fact that many filesystems out there are case insensitive).