polypompholyx has it right. Some of your confusion may be related to the way that barewords are translated into filenames when Perl looks for a module. For example, 'use Math::Complex;' signals Perl to search for the file 'Math/Complex.pm' in @INC and to load it if found (or die with an error if it can't be found).
But even if the module Math/Complex.pm is found, it may or may not contain the package declaration Math::Complex. For example, it could have a typo:
package Math::Compelx;
# blah, blah, blah
1; # modules need to return 'true'
Or it could have multiple packages:
package Math::Complex;
# blah, blah, blah
package Math::Complex::Private;
# blah, blah, blah
1; # modules need to return 'true'
-xdg
Code written by xdg and posted on PerlMonks is public domain. It is provided as is with no warranties, express or implied, of any kind. Posted code may not have been tested. Use of posted code is at your own risk.
|