How many modules?

 | Perl | 2 Comments

Often out of curiosity, and perhaps due to an acute case of extreme boredom, I like to see what is going on behind the scene, e.g. within the deepest internals of good old perl.

Take for example the number and type of perl modules being loaded from a single use statement.

Since I've been playing alot with Moose lately, I'll use that as an example.

Roll up sleeves, cross your finger and fire up a terminal session and enter the following command:

$ perl -e 'use Moose; print join("\n", sort keys %INC)'

Lo and behold you will see a list of seventy-seven or some appear before your eyes:


Moose does not export its sugar to the 'main' package.
AutoLoader.pm
B.pm
Carp.pm
Carp/Heavy.pm
Class/MOP.pm
Class/MOP/Attribute.pm
...
overload.pm
re.pm
strict.pm
vars.pm
warnings.pm
warnings/register.pm

If you try Catalyst instead of Moose, the list will be even longer (169).

So what am I trying to prove? Not much I guess except for the fact that perl allows you to acquire much interesting insight with it's wonderful world of one-liners.

(What does the very first line 'Moose does not export its sugar to the 'main' package.' really mean?)

See Perl Medic by Peter J. Scott for an excellent read.

2 Comments

Saying 'use Moose' whilst in package main (i.e. in a simple script) is probably not what you want (as Moose is for building classes, and having a class called 'main' is a bad idea, as it already has a special meaning for perl).

Ergo, if you use Moose in main then none of the Moose sugar (such as the keywords 'has', 'with' etc) are exported..

You want to either say:

perl -e'use Moose ();' # Explicitly doesn't import anything.

or

perl -Moose -e'#CODE' # use 'oose', Moose for one liners ;)

I can see what you mean and perhaps I should have been more precise.

As it turns out, I just made a 'quick stab' at things to get a general ballpark indication, e.g. the use of 'use' pulls in alot of hidden stuff one should be aware of.

Leave a comment

Recent Entries

A walk along the Keizersgracht
Too often one is so consumed by a jungle of intertwined thoughts that the beauty of the nearby surroundings ... »
Popularity is fickle
The popularity of a given next generation technology is very fickle, and its success or failure depends on many ... »
Where was Kiffin really buried?
Hi There seems to be some confusion on the current resting place of Kiffin Rockwell, some say that his ... »
Going to Portugal
Normally the week just before I leave for summer vacation, I spend hours on end desperately searching for some ... »
A human language
These days it is not very often that a new and exciting Perl book comes along. That's why I ... »