# $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
#
-# Generated on Thu May 30 16:44:56 EET DST 2002 [metaconfig 3.0 PL70]
+# Generated on Fri May 31 05:20:00 EET DST 2002 [metaconfig 3.0 PL70]
# (with additional metaconfig patches by perlbug@perl.org)
cat >c1$$ <<EOF
perlpath (perlpath.U):
This variable contains the eventual value of the PERLPATH symbol,
which contains the name of the perl interpreter to be used in
- shell scripts and in the "eval 'exec'" idiom.
+ shell scripts and in the "eval 'exec'" idiom. This variable is
+ not necessarily the pathname of the file containing the perl
+ interpreter; you must append the executable extension (_exe) if
+ it is not already present. Note that Perl code that runs during
+ the Perl build process cannot reference this variable, as Perl
+ may not have been installed, or even if installed, may be a
+ different version of Perl.
pg (Loc.U):
This variable is used internally by Configure to determine the
# Package name : perl5
# Source directory : .
-# Configuration time: Tue May 28 23:24:18 EET DST 2002
+# Configuration time: Fri May 31 05:21:28 EET DST 2002
# Configured by : jhi
# Target system : osf1 alpha.hut.fi v4.0 878 alpha
ccversion='V5.6-082'
cf_by='jhi'
cf_email='yourname@yourhost.yourplace.com'
-cf_time='Tue May 28 23:24:18 EET DST 2002'
+cf_time='Fri May 31 05:21:28 EET DST 2002'
charsize='1'
chgrp=''
chmod='chmod'
path_sep=':'
perl5='perl'
perl=''
-perl_patchlevel='16824'
+perl_patchlevel='16892'
perladmin='yourname@yourhost.yourplace.com'
perllibs='-lm -lutil'
perlpath='/opt/perl/bin/perl'
vendorprefix=''
vendorprefixexp=''
version='5.8.0'
-version_patchlevel_string='version 8 subversion 0 patch 16824'
+version_patchlevel_string='version 8 subversion 0 patch 16892'
versiononly='undef'
vi=''
voidflags='15'
PERL_API_REVISION=5
PERL_API_VERSION=8
PERL_API_SUBVERSION=0
-PERL_PATCHLEVEL=16824
+PERL_PATCHLEVEL=16892
PERL_CONFIG_SH=true
# Variables propagated from previous config.sh file.
pp_sys_cflags='ccflags="$ccflags -DNO_EFF_ONLY_OK"'
/*
* Package name : perl5
* Source directory : .
- * Configuration time: Tue May 28 23:24:18 EET DST 2002
+ * Configuration time: Fri May 31 05:21:28 EET DST 2002
* Configured by : jhi
* Target system : osf1 alpha.hut.fi v4.0 878 alpha
*/
Don't count on specific values of C<$!>.
+=head2 Command names versus file pathnames
+
+Don't assume that the name used to invoke a command or program with
+C<system> or C<exec> can also be used to test for the existence of the
+file that holds the executable code for that command or program.
+First, many operating systems have "internal" commands that are
+built-in to the OS and while these commands can be invoked, there is
+no corresponding file. Second, some operating systems (Cygwin, DJGPP,
+OS/2, and VOS) have required suffixes for executable files; these
+suffixes are generally permitted on the command name but are not
+required. Thus, a command like "perl" might exist in a file named
+"perl", "perl.exe", or "perl.pm", depending on the operating system.
+The variable "_exe" in the Config module holds the executable suffix,
+if any. Third, VMS files always end in a version number, which comes
+after the executable suffix.
+
+To convert $^X to a file pathname, taking account of the requirements
+of the various operating system possibilities, say:
+ use Config;
+ use File::Spec;
+ $thisperl = $^X;
+ $thisperl .= $Config{_exe} unless $thisperl ~= m/$Config{_exe}([;\d]*)$/i;
+
+To convert $Config{perlpath} to a file pathname, say:
+
+ use Config;
+ use File::Spec;
+ $thisperl = File::Spec->canonpath($Config{perlpath});
+ $thisperl .= $Config{_exe} unless $thisperl ~= m/$Config{_exe}([;\d]*)$/i;
+
=head2 Interprocess Communication (IPC)
In general, don't directly access the system in code meant to be
be the string used to invoke perl but not the pathname of the
perl program file. Also, most operating systems permit invoking
programs that are not in the PATH environment variable, so there
-is no guarantee that the value of $^X is in PATH.
+is no guarantee that the value of $^X is in PATH. For VMS, the
+value may or may not include a version number.
You usually can use the value of $^X to re-invoke an independent
copy of the same perl that is currently running, e.g.,
use Config;
use File::Spec;
$this_perl = File::Spec->canonpath($^X);
- $this_perl .= $Config{exe_ext}
- unless $this_perl =~ m/$Config{exe_ext}$/i;
+ $this_perl .= $Config{_ext}
+ unless $this_perl =~ m/$Config{_ext}([;\d]*)$/i;
Because many operating systems permit anyone with read access to
the Perl program file to make a copy of it, patch the copy, and
use Config;
use File::Spec;
$secure_perl_path = File::Spec->canonpath($Config{perlpath});
- $secure_perl_path .= $Config{exe_ext}
- unless $secure_perl_path =~ m/$Config{exe_ext}$/i;
+ $secure_perl_path .= $Config{_ext}
+ unless $secure_perl_path =~ m/$Config{_ext}([;\d]*)$/i;
=item ARGV