perlquestion
SuperCruncher
I have had great trouble installing modules on Win32.
I have been trying to install
<a href="http://search.cpan.org/search?dist=XML-RSS">XML::RSS</a>
and <a href="http://search.cpan.org/search?dist=XML-Parser">XML::Parser</a>.
This question is really related to module installing under Win32 in general
though. Since the modules previously mentioned are apparently more complicated
to install than most (since they require a C compiler), I'll explain the
trouble I've been having by installing a simpler module -- [lhoward]'s <a href="http://search.cpan.org/search?dist=Number-Spell">Number::Spell</a> module.<p>
I've been advised to use CPAN.pm's shell mode to install modules, so I thought
I'd give that a try. I run<p>
perl -MCPAN -e shell<p>
from the DOS prompt. I then type 'install Number::Spell'. Lots of information appears, but the program finally
exits with:<p>
<code>
When installing with CPAN:
Subprocess "|C:\WINDOWS\ftp.exe -n"
returned status 16777215 (wstat -1)
Bad luck... Still failed!
Can't access URL ftp://usit.shef.ac.uk/pub/packages/CPAN/authors/id/G/GB/GBARR/l
ibnet-1.0703.tar.gz.
</code>
So, I think to myself, I'll just try 'the hard way'. I downloaded the Number::Spell
.tar.gz file. Unzipped and untarred it into a new directory. I understand that I need
a make program, so I get both <A href="ftp://ftp.microsoft.com/Softlib/MSLFILES/nmake15.exe">nmake</a>
and <a href="http://www.gnu.org/software/make/make.html">GNU make</a>. I run <p>
perl makefile.pl<p>
..and get the following error:
<code>
Checking if your kit is complete...
Looks good
Bad command or file name
Bad command or file name
Unable to find a perl 5 (by these names: C:\perl\bin\Perl.exe miniperl perl perl
5 perl5.6.0, in these dirs: C:\WINDOWS c:\windows c:\windows\COMMAND C:\BITWARE\
C:\PERL\BIN c:\perl\bin)
Writing Makefile for Number::Spell
</code>
Apparently, it can't find Perl on my machine. It's looking for a <b>file</b>
named 'c:\perl\bin\perl.exe' in 'c:\perl\bin' which of course it won't find
(in my mind it should be looking for perl.exe in c:\perl\bin).<p>
Nevertheless, I try and run make anyway: (I used GNU Make since nmake didn't
agree with the syntax of the makefile). <p>
<code>
process_begin: CreateProcess((null), 0 -Ic:perllib -Ic:perllib -MExtUtils::Comma
nd -e mkpath bliblibNumber, ...) failed.
make (e=2): The system cannot find the file specified.
C:\WINDOWS\MAKE.EXE: *** [blib\lib\Number\.exists] Error 2
</code>
This made me a bit suspicious, since from the error message I assumed that make
couldn't shell out to Perl. (Hardly surprising I suppose given that makefile.pl
couldn't find Perl). I know a little bit about makefiles from a C++ programming
course that I did so I thought I'd have a look around. I immediately find 2 lines
in the makefile that worry me:<p>
<code>
PERL = 0
FULLPERL = 0
</code>
After looking in MakeMaker.pm's documentation, my suspicions are confirmed, and
I know that these should be set to names of the Perl binary. So I change it to:<p>
<code>
PERL = perl.exe
FULLPERL = perl.exe
</code>
I figure I don't have to provide the absolute path, since I've got c:\perl\bin in my PATH
environment variable. I then trying running make again, and get:
<code>
mkdir bliblibNumber
mkdir blibarchautoNumberSpell
mkdir bliblibautoNumberSpell
mkdir blibman3
</code>
These directory names look like they're missing slashes to me.
But I think "What the heck" and just trying doing 'make install'
anyway. I get:
<code>
Writing c:\perl\lib\site\auto\Number\Spell\.packlist
mkdir c:perllib
Appending installation info to c:\perl\lib/perllocal.pod
</code>
Again, the dir name in the mkdir line looks suspicious.<p>
I just hoped that it might just have installed the module,
so I write a quick one-liner to test it out:<p>
<code>
perl -e "use Number::Spell;"
</code>
and I get the dreaded "Cannot locate Number/Spell.pm in @INC" etc error. <p>
<a href="http://search.cpan.org/">CPAN</a> is often cited as a major advantage
of Perl, and undoubtedly it is. Popular CPAN modules like LWP which have now
made it into the standard Perl distro have undoubtedly saved me hours of time,
but I don't see why these modules are so hard to install. I know it may be easier on
UNIX, but I tend to my development work on Win32 and then deploy on UNIX, so I
really need modules installed on Win32.<p>I'm using ActiveState Perl so I thought I'd try
PPM, but there aren't packages available for the modules I want, and I've had plenty of
other issues with it.<p>
Any help is greatly appreciated.