It is not necessary, however if you don't do it, Perl won't
go as far out of its way to be DWIM.
That may require some explanation.
If you read the documentation for perldoc you will find
that you are supposed to require a filename. For instance:
require "RPG/Item/Weapon/Spear.pm";
However as a special exemption, if you pass it a package
name as a bare word, it will figure out what the filename
should be for you.
require RPG::Item::Weapon::Spear; # Same as above
To get the auto package to filename conversion, the package
must be named as a bareword.
Therefore your eval trick got the bareword in there. Or
you could convert the package that you want into the
filename before loading. Either works (the second is safer
though if the package comes from user input). But if you
pass it an actual string that is the name of a
package, Perl has no way to know that that isn't the
filename desired and so doesn't do the conversion.
Does that make sense? |