To get rid of the unix limitation
you could die without $ENV{HOME},
or use
File::HomeDir.
Here is my caching version, works on ALL systems :)
echo pml is module names list
pminst >pml
echo pmlf is module filenames list
pminst -l >pmlf
echo pmlfl is name tabspace filename
paste pml pmlf >pmlfl
grep "^CGI::S[^:]*$" pml
grep "CGI/S[^/]*$" pmlf
grep -P "^CGI::S\w+$" pml
grep -P "^CGI::S\w+\t" pmlfl
perl -lne "print $_ if /^CGI(::\w+)$/" pml
perl -lne "print $_ if m!CGI/S[^/]*$!" pmlf
perl -lne "print $_ if /^CGI(::\w+)\t/" pmlfl
update: Whoops, I just realized pminst is broken in 2 ways,
This doesn't match
D:\>pminst Wx$
And this matches prints MSWin32-x86-multi-thread
D:\>pminst Wx.pm$
Wx
MSWin32-x86-multi-thread::Wx
D:\>perl -le"print for @INC"
C:/perl/5.10.1/lib/MSWin32-x86-multi-thread
C:/perl/5.10.1/lib
C:/perl/site/5.10.1/lib/MSWin32-x86-multi-thread
C:/perl/site/5.10.1/lib
.