Subject: | Can't find Perl under VMS |
This is perl, v5.6.1 built for VMS_AXP.
OpenVMS V7.3
I added print stmts to BASE.PM to show what code is doing on VMS. There
are 2 problems:
1. On VMS, you usually run PERL as a SYMBOL since the VMS "RUN PERL.EXE"
doesn't allow command line parameters :(. Oftem something like this:
sho symbol perl
PERL == "$PERL_ROOT:[000000]PERL.EXE"
Attempting to run "$4$dua30:[perl.perl-5_6_1.][000000]perl.exe;1" always
fails. In the _backticks subroutine in BASE.PM I added code to replace
that long string with just "perl".
2. When I run perl build.pl I get the output shown in the attachement.
When I run perl makefile.pl, I get this output (with my diagnotics code
included):
perl makefile.pl
# running Build.PL
DEBUG: BASE.PM _backticks running PERL "-MConfig=myconfig" "-e" "print"
"-e" "myconfig"
DEBUG: BASE.PM _backticks running PERL "-MConfig=myconfig" "-e" "print"
"-e" "myconfig"
DEBUG: BASE.PM _backticks running PERL "-le" "print for @INC"
$4$dua30:[perl.perl-5_6_1.][000000]perl.exe;1 "ARRAY(0x54742c)"
Can't open perl script "ARRAY(0x54742c)": file specification syntax error
%RMS-F-SYN, file specification syntax error
Couldn't run Build.PL: at lib/Module/Build/Compat.pm line 200.
%RMS-F-SYN, file specification syntax error
Subject: | base.pm |
Code in BASE.PM, near line 340. My changes: #!#!
sub _backticks {
my ($self, @cmd) = @_;
if ($self->have_forkpipe) {
local *FH;
my $pid = open FH, "-|";
if ($pid) {
return wantarray ? <FH> : join '', <FH>;
} else {
die "Can't execute @cmd: $!\n" unless defined $pid;
exec { $cmd[0] } @cmd;
}
} else {
my $cmd = $self->_quote_args(@cmd);
if ($self->os_type eq 'VMS') { #!#!
$cmd =~ s/(.*)PERL\.EXE(;\d+"){0,1}\s+(.*)/perl $3/i; #!#!
print "DEBUG: BASE.PM _backticks running $cmd\n"; #!#!
} #!#!
return `$cmd`;
}
}
Output (including my print diagnostics):
perl build.pl
DEBUG: BASE.PM _backticks running $4$dua30:[perl.perl-5_6_1.][000000]perl.exe;1 -MConfig=myconfig -e print -e myconfig
%DCL-W-IVVERB, unrecognized command verb - check validity and spelling
\"$4$dua30:[perl.perl-5_6_1.][000000]perl.exe;1"\
Can't locate the perl binary used to run this script in ($4$dua30:[perl.perl-5_6_1.][000000] $4$dua30:[perl.perl-5_6_1.000000] USER_DIR:[N15MB1.BUILD])
With the code above, you get:
perl build.pl
DEBUG: BASE.PM _backticks running PERL "-MConfig=myconfig" "-e" "print" "-e" "myconfig"
Checking whether your kit is complete...
Looks good
Checking prerequisites...
* Optional prerequisite ExtUtils::CBuilder is not installed
* Optional prerequisite Module::Signature is not installed
* Optional prerequisite ExtUtils::ParseXS is not installed
* Optional prerequisite Pod::Readme is not installed
* Optional prerequisite Archive::Tar is not installed
ERRORS/WARNINGS FOUND IN PREREQUISITES. You may wish to install the versions
of the modules indicated above before proceeding with this installation
Checking features:
C_support..........disabled
* Optional prerequisite ExtUtils::ParseXS is not installed
- ExtUtils::CBuilder is not installed
YAML_support.......disabled
- YAML is not installed
HTML_support.......enabled
manpage_support....enabled
Creating new 'Build.com' script for 'Module-Build' version '0.2801'
DEBUG: BASE.PM _backticks running PERL "-le" "print for @INC"