"Can you say a few more words about how to create this namespace?"
I believe that Discipulus was using that namespace as an example, but either way, here's how.
Using Module::Starter. I've left in all of the commands so you can see what's happening:
spek@scelia ~/scratch $ module-starter --module=X::Y::ConnectInfo::Win
+32 --author="Your Name" --email=your@email.com --license=perl
Added to MANIFEST: Changes
Added to MANIFEST: ignore.txt
Added to MANIFEST: lib/X/Y/ConnectInfo/Win32.pm
Added to MANIFEST: Makefile.PL
Added to MANIFEST: MANIFEST
Added to MANIFEST: README
Added to MANIFEST: t/00-load.t
Added to MANIFEST: t/manifest.t
Added to MANIFEST: t/pod-coverage.t
Added to MANIFEST: t/pod.t
Added to MANIFEST: xt/boilerplate.t
Created starter directories and files
spek@scelia ~/scratch $ cd X-Y-ConnectInfo-Win32/
spek@scelia ~/scratch/X-Y-ConnectInfo-Win32 $ ll lib/X/Y/ConnectInfo/
total 20
drwxr-xr-x 2 spek spek 4096 Aug 9 13:57 ./
drwxr-xr-x 3 spek spek 4096 Aug 9 13:57 ../
-rw-r--r-- 1 spek spek 1989 Aug 9 13:57 Win32.pm
By hand is the same. Create any directory to hold the distribution which is your top(root)-level directory (I typically name mine lower-case with dashes, eg: top-container-thing), which contains all of your distribution information and directory hierarchy. To have X::Y::ConnectInfo::Win32, we'd then create a lib directory (after going into your top-level dir), then an X directory in that, a Y directory within X, another directory... you get the picture. The magic happens at the Win32.pm file. That's what gets registered in @INC. That's how a module is brought to life.
All that also means, that if you create, then drop a Ubuntu.pm file within the lib/X/Y/ConnectInfo directory, it'll be registered by the system as X::Y::ConnectInfo::Ubuntu module, ready for use. It'll be seen the same on the CPAN.
One last note... when we say "module", we mean the actual code rendered out of the .pm file. We refer to the entire package of all the stuff shown above as the module's "distribution". We install distributions from the CPAN, and a distribution can include one, or several modules. |