On Nov 23, 2007 11:36 PM, Matisse Enzer <[EMAIL PROTECTED]> wrote: > > On Nov 21, 2007, at 2:44 PM, Michael G Schwern wrote: > > > > While it is not documented, you can override what perl CPAN.pm uses > > with > > $CPAN::Shell. So you can write a little @INC modification module > > and set > > > > $CPAN::Shell = "$^X -MINC::Surgery"; > > > I think it is actually > $CPAN::Perl > and, if the value you use contains any whitespace the entire command > will get quoted, which could break things.
I think this is because the assumption is that the spaces will be due to spaces in the path (such as on Win32), not spaces due to command/argument separator. > For example, if you set: > > $CPAN::Perl = "$^X -MINC::Surgery"; > > then CPAN will convert that to: > > 'perl -MINC::Surgery' > and if you have any makepl_args then: > > 'perl -MINC::Surgery' INSTALL_BASE=/some/path > > which will break when CPAN calls: > system('perl -MINC::Surgery' INSTALL_BASE=/some/path); > with "file not found". > > If you include some quotes when setting $CPAN::Perl then the auto- > quoting won't happen: > > $CPAN::Perl = "$^X -M'INC::Surgery'"; # Will not get "safe_quote" On win32 you would want to quote $^X, as it could very likely (and annoyingly) resolve to "C:\program files\perl\bin\perl.exe" And given that you can create directories with spaces in them on Linux as well I guess the same applies there, although the likely its needed is much lower. I think maybe what you really want to do is use the environment variable PERL5OPT for this instead of messing with $CPAN::Perl. $ENV{PERL5OPT}='-MINC::Surgery'; before spawning a new perl process should do the trick. Yves -- perl -Mre=debug -e "/just|another|perl|hacker/"