summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Ing-Simmons <nik@tiuk.ti.com>2001-05-18 07:23:03 +0000
committerNick Ing-Simmons <nik@tiuk.ti.com>2001-05-18 07:23:03 +0000
commit50bd636b8a953239c6900a5df6032cafe9cf956a (patch)
tree34e37c341adfa2abd3841c5bbd242c10c742d0c3
parent16ad5aca1f5177638c984f3315f96c0cd2f10334 (diff)
parentefb30f323b8a33c623d2f52ac4de2a6e862d909a (diff)
downloadperl-50bd636b8a953239c6900a5df6032cafe9cf956a.tar.gz
Integrate mainline.
p4raw-id: //depot/perlio@10154
-rw-r--r--Changes185
-rwxr-xr-xConfigure6
-rw-r--r--MANIFEST5
-rw-r--r--Makefile.SH2
-rw-r--r--Policy_sh.SH2
-rw-r--r--Porting/Glossary4
-rw-r--r--Porting/config.sh12
-rw-r--r--Porting/config_H8
-rw-r--r--README.dgux121
-rw-r--r--README.hpux103
-rwxr-xr-xcflags.SH4
-rw-r--r--config_h.SH8
-rwxr-xr-xconfigpm8
-rw-r--r--configure.com2
-rw-r--r--dump.c70
-rw-r--r--ext/B/B/Deparse.pm77
-rw-r--r--ext/Thread/Thread.xs11
-rw-r--r--ext/Time/HiRes/HiRes.pm6
-rw-r--r--hints/dgux.sh200
-rw-r--r--hints/hpux.sh97
-rwxr-xr-xinstallman28
-rwxr-xr-xinstallperl31
-rw-r--r--lib/Switch.pm15
-rw-r--r--makeaperl.SH2
-rwxr-xr-xmakedepend.SH4
-rwxr-xr-xmakedir.SH2
-rw-r--r--myconfig.SH2
-rw-r--r--patchlevel.h2
-rw-r--r--perl.c13
-rw-r--r--pod/buildtoc.PL3
-rw-r--r--pod/perl.pod2
-rw-r--r--pod/perl572delta.pod9
-rw-r--r--pod/perldiag.pod196
-rw-r--r--pod/perlref.pod7
-rw-r--r--pod/perltoc.pod510
-rw-r--r--pod/perltodo.pod2
-rw-r--r--pp_hot.c40
-rw-r--r--regcomp.c6
-rw-r--r--regexec.c45
-rw-r--r--t/lib/1_compile.t1
-rwxr-xr-xt/lib/glob-basic.t5
-rw-r--r--t/lib/i18n-collate.t44
-rw-r--r--t/lib/time-hires.t2
-rwxr-xr-xt/op/misc.t14
-rw-r--r--t/op/re_tests56
-rw-r--r--t/op/regmesg.t70
-rw-r--r--t/pragma/warn/pp_hot4
-rw-r--r--t/pragma/warn/regcomp52
-rw-r--r--thread.h20
-rw-r--r--util.c8
-rw-r--r--utils.lst20
-rw-r--r--writemain.SH2
52 files changed, 1576 insertions, 572 deletions
diff --git a/Changes b/Changes
index 98e2a29b46..c89b99a384 100644
--- a/Changes
+++ b/Changes
@@ -31,6 +31,191 @@ or any other branch.
Version v5.7.1 Development release working toward v5.8
--------------
____________________________________________________________________________
+[ 10132] By: jhi on 2001/05/16 14:50:55
+ Log: Deprecate pseudo-hashes.
+ Branch: perl
+ ! pod/perl572delta.pod pod/perlref.pod pod/perltodo.pod
+____________________________________________________________________________
+[ 10131] By: jhi on 2001/05/16 14:26:01
+ Log: HP-UX hints update from Merijn.
+ Branch: perl
+ ! hints/hpux.sh
+____________________________________________________________________________
+[ 10130] By: jhi on 2001/05/16 14:23:01
+ Log: README.hpux update from Merijn.
+ Branch: perl
+ ! README.hpux
+____________________________________________________________________________
+[ 10129] By: jhi on 2001/05/16 14:18:56
+ Log: Subject: Re: [PATCH] Abstract "utility" information from installman
+ From: Simon Cozens <simon@netthink.co.uk>
+ Date: Wed, 16 May 2001 15:57:55 +0100
+ Message-ID: <20010516155755.A4728@netthink.co.uk>
+ Branch: perl
+ + utils.lst
+ ! MANIFEST installman installperl
+____________________________________________________________________________
+[ 10128] By: jhi on 2001/05/16 14:15:36
+ Log: Subject: Re: [ID 20010515.001] -DPERL_Y2KWARN doesn't do what it should (Not OK: perl v5.7.1 +DEVEL10104 on i586-linux 2.2.16-22 (UNINST
+ From: "Philip Newton" <pnewton@gmx.de>
+ Date: Tue, 15 May 2001 16:31:05 +0200
+ Message-ID: <3B0159C9.1905.1C6AEF9@localhost>
+
+ Fix PERL_Y2KWARN test to check before rather than after appending.
+ Branch: perl
+ ! pp_hot.c
+____________________________________________________________________________
+[ 10127] By: jhi on 2001/05/16 14:08:15
+ Log: Regen Porting stuff.
+ Branch: perl
+ ! Configure Porting/Glossary Porting/config.sh Porting/config_H
+ ! config_h.SH
+____________________________________________________________________________
+[ 10126] By: jhi on 2001/05/16 13:41:50
+ Log: Metaconfig unit change for #10125.
+ Branch: metaconfig
+ ! U/modified/Oldconfig.U
+____________________________________________________________________________
+[ 10125] By: jhi on 2001/05/16 13:41:35
+ Log: Use OSVERS.
+ Branch: perl
+ ! Configure config_h.SH perl.c
+____________________________________________________________________________
+[ 10124] By: jhi on 2001/05/16 13:41:09
+ Log: Regen toc.
+ Branch: perl
+ ! pod/buildtoc.PL pod/perl.pod pod/perltoc.pod
+____________________________________________________________________________
+[ 10123] By: jhi on 2001/05/16 13:25:38
+ Log: Adding the README.dgux to the MANIFEST would be a good idea.
+ Branch: perl
+ ! MANIFEST
+____________________________________________________________________________
+[ 10122] By: jhi on 2001/05/16 13:08:33
+ Log: Move the stack desire definition to thread.h.
+ Branch: perl
+ ! ext/Thread/Thread.xs thread.h
+____________________________________________________________________________
+[ 10121] By: jhi on 2001/05/16 13:00:12
+ Log: DG-UX threading patches, including a README.dgux,
+ from Takis Psarogiannakopoulos.
+ Branch: perl
+ + README.dgux
+ ! config_h.SH ext/Thread/Thread.xs hints/dgux.sh perl.c
+____________________________________________________________________________
+[ 10120] By: jhi on 2001/05/16 12:55:33
+ Log: Subject: [PATCH B::Deparse] More on /x regexes
+ From: Robin Houston <robin@kitsite.com>
+ Date: Tue, 15 May 2001 19:09:35 +0100
+ Message-ID: <20010515190935.A27268@penderel>
+ Branch: perl
+ ! ext/B/B/Deparse.pm
+____________________________________________________________________________
+[ 10119] By: jhi on 2001/05/16 12:45:29
+ Log: Document that the core time() may be rounding rather
+ than truncating, would have saved at least my confusion.
+ Branch: perl
+ ! ext/Time/HiRes/HiRes.pm
+____________________________________________________________________________
+[ 10118] By: jhi on 2001/05/16 12:37:57
+ Log: Subject: perl-current/t/time-hires.t
+ From: John Peacock <jpeacock@rowman.com>
+ Date: Fri, 11 May 2001 14:09:41 -0400
+ Message-ID: <3AFC2AE5.5E787E54@rowman.com>
+ Branch: perl
+ ! t/lib/time-hires.t
+____________________________________________________________________________
+[ 10117] By: jhi on 2001/05/15 13:40:33
+ Log: Subject: [PATCH dump.c] Op private flags
+ From: Simon Cozens <simon@netthink.co.uk>
+ Date: Sun, 13 May 2001 20:20:36 +0100
+ Message-ID: <20010513202036.A21896@netthink.co.uk>
+ Branch: perl
+ ! dump.c
+____________________________________________________________________________
+[ 10116] By: jhi on 2001/05/15 13:28:26
+ Log: Upgrade to Switch 2.03.
+ Branch: perl
+ ! lib/Switch.pm
+____________________________________________________________________________
+[ 10115] By: jhi on 2001/05/15 13:19:01
+ Log: Integrate change #10113 from mainline: rename CONFIGDOTSH
+ to PERL_CONFIG_SH and use it consistently.
+ Branch: maint-5.6/perl
+ !> Configure Makefile.SH Policy_sh.SH cflags.SH config_h.SH
+ !> configpm configure.com makeaperl.SH makedepend.SH makedir.SH
+ !> myconfig.SH writemain.SH
+____________________________________________________________________________
+[ 10114] By: jhi on 2001/05/15 13:13:21
+ Log: Metaconfig units changes for #10113.
+ Branch: metaconfig
+ ! U/modified/Config_h.U U/modified/Extract.U U/modified/Oldsym.U
+____________________________________________________________________________
+[ 10113] By: jhi on 2001/05/15 13:12:40
+ Log: The problem described in 20010514.031 still wasn't
+ fully cured, there were remnants of $CONFIG when
+ $CONFIGDOTSH was expected. Now renamed to PERL_CONFIG_SH
+ to avoid future conflicts.
+ Branch: perl
+ ! Configure Makefile.SH Policy_sh.SH cflags.SH config_h.SH
+ ! configpm configure.com makeaperl.SH makedepend.SH makedir.SH
+ ! myconfig.SH writemain.SH
+____________________________________________________________________________
+[ 10112] By: jhi on 2001/05/15 11:55:44
+ Log: Half of #10107 got lost.
+ Branch: perl
+ ! ext/B/B/Deparse.pm
+____________________________________________________________________________
+[ 10111] By: nick on 2001/05/15 08:39:14
+ Log: Integrate mainline.
+ Branch: perlio
+ +> ext/POSIX/hints/uts.pl
+ - Todo Todo-5.6 t/camel-III/vstring.t
+ !> (integrate 48 files)
+____________________________________________________________________________
+[ 10110] By: jhi on 2001/05/15 02:04:05
+ Log: Subject: [PATCH TestInit.pm] Give Deparse tester a fair chance
+ From: Robin Houston <robin@kitsite.com>
+ Date: Mon, 14 May 2001 22:27:08 +0100
+ Message-ID: <20010514222708.A22963@penderel>
+ Branch: perl
+ ! t/TestInit.pm
+____________________________________________________________________________
+[ 10109] By: jhi on 2001/05/15 02:03:12
+ Log: Subject: [PATCH B::Deparse] Lvaluable method calls
+ From: Robin Houston <robin@kitsite.com>
+ Date: Mon, 14 May 2001 22:16:43 +0100
+ Message-ID: <20010514221643.A22437@penderel>
+ Branch: perl
+ ! ext/B/B/Deparse.pm
+____________________________________________________________________________
+[ 10108] By: jhi on 2001/05/15 02:02:17
+ Log: Subject: [PATCH B::Deparse] C<$foo =~ give_me_a_regex>; /x modifier
+ From: Robin Houston <robin@kitsite.com>
+ Date: Mon, 14 May 2001 22:03:44 +0100
+ Message-ID: <20010514220344.A20643@penderel>
+ Branch: perl
+ ! ext/B/B/Deparse.pm
+____________________________________________________________________________
+[ 10107] By: jhi on 2001/05/15 02:01:24
+ Log: Subject: [PATCH B::Deparse] "${foo}_bar"
+ From: Robin Houston <robin@kitsite.com>
+ Date: Mon, 14 May 2001 22:10:07 +0100
+ Message-ID: <20010514221007.A21118@penderel>
+ Branch: perl
+ ! ext/B/B/Deparse.pm
+____________________________________________________________________________
+[ 10106] By: jhi on 2001/05/15 01:41:26
+ Log: Fix for 20010514.037; substr() didn't invalidate the locale
+ collation magic.
+ Branch: perl
+ ! pp.c
+____________________________________________________________________________
+[ 10105] By: jhi on 2001/05/14 18:18:24
+ Log: Update Changes.
+ Branch: perl
+ ! Changes patchlevel.h
+____________________________________________________________________________
[ 10104] By: jhi on 2001/05/14 18:09:07
Log: Retract #10094.
Branch: perl
diff --git a/Configure b/Configure
index 875fa9b388..e228bcefb9 100755
--- a/Configure
+++ b/Configure
@@ -20,7 +20,7 @@
# $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
#
-# Generated on Thu May 10 17:37:57 EET DST 2001 [metaconfig 3.0 PL70]
+# Generated on Wed May 16 17:18:11 EET DST 2001 [metaconfig 3.0 PL70]
# (with additional metaconfig patches by perlbug@perl.org)
cat >c1$$ <<EOF
@@ -1499,7 +1499,7 @@ esac
: script used to extract .SH files with variable substitutions
cat >extract <<'EOS'
-CONFIGDOTSH=true
+PERL_CONFIG_SH=true
echo "Doing variable substitutions on .SH files..."
if test -f $src/MANIFEST; then
set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
@@ -16892,7 +16892,7 @@ $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
: add special variables
$test -f $src/patchlevel.h && \
awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
-echo "CONFIGDOTSH=true" >>config.sh
+echo "PERL_CONFIG_SH=true" >>config.sh
: propagate old symbols
if $test -f UU/config.sh; then
diff --git a/MANIFEST b/MANIFEST
index 6a5f064d4a..e6c517950f 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -41,7 +41,8 @@ README.apollo Notes about Apollo DomainOS port
README.beos Notes about BeOS port
README.bs2000 Notes about BS2000 POSIX port
README.cygwin Notes about Cygwin port
-README.dos Notes about dos/djgpp port
+README.dgux Notes about DG/UX port
+README.dos Notes about DOS/DJGPP port
README.epoc Notes about EPOC port
README.hpux Notes about HP-UX port
README.hurd Notes about GNU/Hurd port
@@ -1534,6 +1535,7 @@ t/lib/h2ph.h Test header file for h2ph
t/lib/h2ph.pht Generated output from h2ph.h by h2ph, for comparison
t/lib/h2ph.t See if h2ph works like it should
t/lib/hostname.t See if Sys::Hostname works
+t/lib/i18n-collate.t See if I18N::Collate works
t/lib/io_const.t See if constants from IO work
t/lib/io_dir.t See if directory-related methods from IO work
t/lib/io_dup.t See if dup()-related methods from IO work
@@ -1857,6 +1859,7 @@ utf8.h Unicode header
utfebcdic.h Unicode on EBCDIC (UTF-EBCDIC, tr16) header
util.c Utility routines
util.h Dummy header
+utils.lst Lists utilities bundled with Perl
utils/Makefile Extract the utility scripts
utils/c2ph.PL program to translate dbx stabs to perl
utils/dprofpp.PL Perl code profile post-processor
diff --git a/Makefile.SH b/Makefile.SH
index c3b1548a24..7c160d9e81 100644
--- a/Makefile.SH
+++ b/Makefile.SH
@@ -1,5 +1,5 @@
#! /bin/sh
-case $CONFIGDOTSH in
+case $PERL_CONFIG_SH in
'')
if test -f config.sh
then TOP=.
diff --git a/Policy_sh.SH b/Policy_sh.SH
index fec18b9385..aefa08f367 100644
--- a/Policy_sh.SH
+++ b/Policy_sh.SH
@@ -1,4 +1,4 @@
-case $CONFIGDOTSH in
+case $PERL_CONFIG_SH in
'') . ./config.sh ;;
esac
echo "Extracting Policy.sh (with variable substitutions)"
diff --git a/Porting/Glossary b/Porting/Glossary
index 4507f19af1..3c6730a310 100644
--- a/Porting/Glossary
+++ b/Porting/Glossary
@@ -258,10 +258,6 @@ compress (Loc.U):
This variable is defined but not used by Configure.
The value is a plain '' and is not useful.
-CONFIGDOTSH (Oldsyms.U):
- This is set to 'true' in config.sh so that a shell script
- sourcing config.sh can tell if it has been sourced already.
-
contains (contains.U):
This variable holds the command to do a grep with a proper return
status. On most sane systems it is simply "grep". On insane systems
diff --git a/Porting/config.sh b/Porting/config.sh
index 415fa44af2..9563d12c00 100644
--- a/Porting/config.sh
+++ b/Porting/config.sh
@@ -8,7 +8,7 @@
# Package name : perl5
# Source directory : .
-# Configuration time: Thu Apr 19 03:59:37 EET DST 2001
+# Configuration time: Wed May 16 17:42:51 EET DST 2001
# Configured by : jhi
# Target system : osf1 alpha.hut.fi v4.0 878 alpha
@@ -62,7 +62,7 @@ ccsymbols='__alpha=1 __LANGUAGE_C__=1 __osf__=1 __unix__=1 _LONGLONG=1 _SYSTYPE_
ccversion='V5.6-082'
cf_by='jhi'
cf_email='yourname@yourhost.yourplace.com'
-cf_time='Thu Apr 19 03:59:37 EET DST 2001'
+cf_time='Wed May 16 17:42:51 EET DST 2001'
charsize='1'
chgrp=''
chmod=''
@@ -416,7 +416,7 @@ dlext='so'
dlsrc='dl_dlopen.xs'
doublesize='8'
drand01='drand48()'
-dynamic_ext='B ByteLoader Cwd DB_File Data/Dumper Devel/DProf Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call IO IPC/SysV List/Util MIME/Base64 NDBM_File ODBM_File Opcode POSIX PerlIO/Scalar PerlIO/Via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Thread Time/HiRes XS/Typemap attrs re'
+dynamic_ext='B ByteLoader Cwd DB_File Data/Dumper Devel/DProf Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call IO IPC/SysV List/Util MIME/Base64 NDBM_File ODBM_File Opcode POSIX PerlIO/Scalar PerlIO/Via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Thread Time/HiRes Time/Piece XS/Typemap attrs re'
eagain='EAGAIN'
ebcdic='undef'
echo='echo'
@@ -425,7 +425,7 @@ emacs=''
eunicefix=':'
exe_ext=''
expr='expr'
-extensions='B ByteLoader Cwd DB_File Data/Dumper Devel/DProf Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call IO IPC/SysV List/Util MIME/Base64 NDBM_File ODBM_File Opcode POSIX PerlIO/Scalar PerlIO/Via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Thread Time/HiRes XS/Typemap attrs re Errno'
+extensions='B ByteLoader Cwd DB_File Data/Dumper Devel/DProf Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call IO IPC/SysV List/Util MIME/Base64 NDBM_File ODBM_File Opcode POSIX PerlIO/Scalar PerlIO/Via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Thread Time/HiRes Time/Piece XS/Typemap attrs re Errno'
fflushNULL='define'
fflushall='undef'
find=''
@@ -565,7 +565,7 @@ issymlink='test -h'
ivdformat='"ld"'
ivsize='8'
ivtype='long'
-known_extensions='B ByteLoader Cwd DB_File Data/Dumper Devel/DProf Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call GDBM_File IO IPC/SysV List/Util MIME/Base64 NDBM_File ODBM_File Opcode POSIX PerlIO/Scalar PerlIO/Via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Thread Time/HiRes XS/Typemap attrs re'
+known_extensions='B ByteLoader Cwd DB_File Data/Dumper Devel/DProf Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call GDBM_File IO IPC/SysV List/Util MIME/Base64 NDBM_File ODBM_File Opcode POSIX PerlIO/Scalar PerlIO/Via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Thread Time/HiRes Time/Piece XS/Typemap attrs re'
ksh=''
ld='ld'
lddlflags='-shared -expect_unresolved "*" -msym -std -s'
@@ -851,6 +851,6 @@ PERL_SUBVERSION=1
PERL_API_REVISION=5
PERL_API_VERSION=5
PERL_API_SUBVERSION=0
-CONFIGDOTSH=true
+PERL_CONFIG_SH=true
# Variables propagated from previous config.sh file.
pp_sys_cflags='ccflags="$ccflags -DNO_EFF_ONLY_OK"'
diff --git a/Porting/config_H b/Porting/config_H
index 98150fcfba..1dd033ca97 100644
--- a/Porting/config_H
+++ b/Porting/config_H
@@ -17,7 +17,7 @@
/*
* Package name : perl5
* Source directory : .
- * Configuration time: Thu Apr 19 03:59:37 EET DST 2001
+ * Configuration time: Wed May 16 17:42:51 EET DST 2001
* Configured by : jhi
* Target system : osf1 alpha.hut.fi v4.0 878 alpha
*/
@@ -1042,7 +1042,13 @@
* by Configure. You shouldn't rely on it too much; the specific
* feature tests from Configure are generally more reliable.
*/
+/* OSVERS:
+ * This symbol contains the version of the operating system, as determined
+ * by Configure. You shouldn't rely on it too much; the specific
+ * feature tests from Configure are generally more reliable.
+ */
#define OSNAME "dec_osf" /**/
+#define OSVERS "4.0d" /**/
/* MEM_ALIGNBYTES:
* This symbol contains the number of bytes required to align a
diff --git a/README.dgux b/README.dgux
new file mode 100644
index 0000000000..7ff0534947
--- /dev/null
+++ b/README.dgux
@@ -0,0 +1,121 @@
+If you read this file _as_is_, just ignore the funny characters you
+see. It is written in the POD format (see perlpod manpage) which is
+specially designed to be readable as is.
+
+=head1 NAME
+
+perldgux - Perl under DG/UX.
+
+=head1 SYNOPSIS
+
+One can read this document in the following formats:
+
+ man perldgux
+ view perl perldgux
+ explorer perldgux.html
+ info perldgux
+
+to list some (not all may be available simultaneously), or it may
+be read I<as is>: as F<README.dgux>.
+
+=cut
+
+Contents
+
+ perldgux - Perl under DG/UX.
+
+ NAME
+ SYNOPSIS
+ DESCRIPTION
+ BUILD
+ - Non-threaded Case
+ - Threaded Case
+ - Testing
+ - Installing the built perl
+ AUTHOR
+ SEE ALSO
+
+=head1 DESCRIPTION
+
+Perl 5.7/8.x for DG/UX ix86 R4.20MU0x
+
+=head1 BUILD
+
+=head2 Non-threaded Case
+
+Just run ./Configure script from the top directory.
+Then give "make" to compile.
+
+=head2 Threaded Case
+
+If you are using as compiler GCC-2.95.x rev(DG/UX)
+an easy solution for configuring perl in your DG/UX
+machine is to run the command:
+
+./Configure -Dusethreads -Duse5005threads -des
+
+This will automatically accept all the defaults and
+in particular /usr/local/ as installation directory.
+Note that GCC-2.95.x rev(DG/UX) knows the switch
+-pthread whcih allows it to link correctly DG/UX's
+-lthread library.
+
+If you want to change the installtion directory or
+have a standard DG/UX with C compiler GCC-2.7.2.x
+then you have no choice than to do an interactive
+build by issuing the command:
+
+./Configure -Dusethreads -Duse5005threads
+
+In particular with GCC-2.7.2.x accept all the defaults
+and *watch* out for the message:
+
+====
+Any additional ld flags (NOT including libraries)? [ -pthread]
+====
+
+Instead of -pthread put here -lthread. CGCC-2.7.2.x
+that comes with the DG/UX OS does NOT know the -pthread
+switch. So your build will fail if you choose the defaults.
+After configuration is done correctly give "make" to compile.
+
+=head2 Testing
+
+Issuing a "make test" will run all the tests.
+If the test lib/ftmp-security gives you as a result
+something like
+
+=====
+lib/ftmp-security....File::Temp::_gettemp:
+Parent directory (/tmp/) is not safe (sticky bit not set
+when world writable?) at lib/ftmp-security.t line 100
+=====
+
+don't panic and just set the sticky bit in your /tmp
+directory by doing the following as root:
+
+cd /
+chmod +t /tmp (=set the sticky bit to /tmp).
+
+Then rerun the tests. This time all must be OK.
+
+=head2 Installing the built perl
+
+Run the command "make install"
+
+=head1 AUTHOR
+
+Takis Psarogiannakopoulos
+Universirty of Cambridge
+Centre for Mathematical Sciences
+Department of Pure Mathematics
+Wilberforce road
+Cambridge CB3 0WB , UK
+email <takis@xfree86.org>
+
+=head1 SEE ALSO
+
+perl(1).
+
+=cut
+
diff --git a/README.hpux b/README.hpux
index 7d0198353c..732fdec044 100644
--- a/README.hpux
+++ b/README.hpux
@@ -42,7 +42,7 @@ update is 2.0.
The original version of PA-RISC, HP no longer sells any system with this chip.
-The following systems contain PA-RISC 1.0 chips:
+The following systems contained PA-RISC 1.0 chips:
600, 635, 645, 808, 815, 822, 825, 832, 834, 835, 840, 842, 845, 850, 852,
855, 860, 865, 870, 890
@@ -83,7 +83,7 @@ A complete list of models at the time the OS was built is in the file
/opt/langtools/lib/sched.models. The first column corresponds to the
output of the "uname -m" command (without the leading "9000/"). The
second column is the PA-RISC version and the third column is the exact
-chip type used.
+chip type used. (Start browsing at the bottom to prevent confusion ;-)
=head2 Portability Between PA-RISC Versions
@@ -94,12 +94,27 @@ Perl to to also run on a PA-RISC 1.1, the compiler flags +DAportable and
+DS32 should be used.
It is no longer possible to compile PA-RISC 1.0 executables on either
-the PA-RISC 1.1 or 2.0 platforms.
+the PA-RISC 1.1 or 2.0 platforms. The command-line flags are accepted,
+but the resulting executable will not run when transferred to a PA-RISC
+1.0 system.
+
+=head2 Itanium Processor Family
+
+HP-UX also runs on the new Itanium processor. This requires the use
+of a different version of HP-UX (currently 11.20), and with the exception
+of a few differences detailed below and in later sections, Perl should
+compile with no problems.
+
+Although PA-RISC binaries can run on Itanium systems, you should not
+attempt to use a PA-RISC version of Perl on an Itanium system. This is
+because shared libraries created on an Itanium system cannot be loaded
+while running a PA-RISC executable.
=head2 Building Dynamic Extensions on HP-UX
HP-UX supports dynamically loadable libraries (shared libraries).
-Shared libraries end with the suffix .sl.
+Shared libraries end with the suffix .sl. On Itanium systems,
+they end with the suffix .so.
Shared libraries created on a platform using a particular PA-RISC
version are not usable on platforms using an earlier PA-RISC version by
@@ -107,6 +122,12 @@ default. However, this backwards compatibility may be enabled using the
same +DAportable compiler flag (with the same PA-RISC 1.0 caveat
mentioned above).
+Shared libraries created on an Itanium platform cannot be loaded on
+a PA-RISC platform. Shared libraries created on a PA-RISC platform
+can only be loaded on an Itanium platform if it is a PA-RISC executable
+that is attempting to load the PA-RISC library. A PA-RISC shared
+library cannot be loaded into an Itanium executable nor vice-versa.
+
To create a shared library, the following steps must be performed:
1. Compile source modules with +z or +Z flag to create a .o module
@@ -140,13 +161,57 @@ modules are then linked into the shared library.
Note that it is okay to create a library which contains a dependent
library that is already linked into perl.
-It is no longer possible to link PA-RISC 1.0 shared libraries.
+Some extensions, like DB_File and Compress::Zlib use/require prebuilt
+libraries for the perl extensions/modules to work. If these libraries
+are built using the default configuration, it might happen that you run
+into an error like "invalid loader fixup" during load phase. HP is aware
+of this problem and address it at
+ http://devresource.hp.com/devresource/Docs/TechTips/cxxTips.html#tip13
+
+A more general approach is to intervene manually, as with an example for
+the DB_File module, which requires SleepyCat's libdb.sl:
+
+ # cd .../db-3.2.9/build_unix
+ # vi Makefile
+ ... add +Z to all cflags to create shared objects
+ CFLAGS= -c $(CPPFLAGS) +Z -Ae +O2 +Onolimit \
+ -I/usr/local/include -I/usr/include/X11R6
+ CXXFLAGS= -c $(CPPFLAGS) +Z -Ae +O2 +Onolimit \
+ -I/usr/local/include -I/usr/include/X11R6
+
+ # make clean
+ # make
+ # mkdir tmp
+ # cd tmp
+ # ar x ../libdb.a
+ # ld -b -o libdb-3.2.sl *.o
+ # mv libdb-3.2.sl /usr/local/lib
+ # rm *.o
+ # cd /usr/local/lib
+ # rm -f libdb.sl
+ # ln -s libdb-3.2.sl libdb.sl
+
+ # cd .../DB_File-1.76
+ # make distclean
+ # perl Makefile.PL
+ # make
+ # make test
+ # make install
+
+It is no longer possible to link PA-RISC 1.0 shared libraries (even
+though the command-line flags are still present).
+
+PA-RISC and Itanium object files are not interchangeable. Although
+you may be able to use ar to create an archive library of PA-RISC
+object files on an Itanium system, you cannot link against it using
+an Itanium link editor.
=head2 The HP ANSI C Compiler
When using this compiler to build Perl, you should make sure that the
flag -Aa is added to the cpprun and cppstdin variables in the config.sh
-file (though see the section on 64-bit perl below).
+file (though see the section on 64-bit perl below). If you are using a
+recent version of the Perl distribution, these flags are set automatically.
=head2 Using Large Files with Perl
@@ -192,10 +257,9 @@ HP-UX 11.00 at least.
To compile Perl with threads, add -Dusethreads to the arguments of
Configure. Verify that the -D_POSIX_C_SOURCE=199506L compiler flag is
automatically added to the list of flags. Also make sure that -lpthread
-is listed before -lc in the list of libraries to link Perl with.
-
-As of the date of this document, Perl threads are not fully supported on
-HP-UX.
+is listed before -lc in the list of libraries to link Perl with. The
+hints provided for HP-UX during Configure will try very hard to get
+this right for you.
HP-UX versions before 10.30 require a seperate installation of a POSIX
threads library package. Two examples are the HP DCE package, available
@@ -267,6 +331,23 @@ like for example C<"!">:
s!foo!!;
+=head2 Kernel parameters (maxdsiz)
+
+By default, HP-UX comes configured with a maximum data segment size of
+64MB. This is too small to correctly compile Perl with the maximum
+optimization levels. You can increase the size of the maxdsiz kernel
+parameter through the use of SAM.
+
+When using the GUI version of SAM, click on the Kernel Configuration
+icon, then the Configurable Parameters icon. Scroll down and select
+the maxdsiz line. From the Actions menu, select the Modify Configurable
+Parameter item. Insert the new formula into the Formula/Value box.
+Then follow the instructions to rebuild your kernel and reboot your
+system.
+
+In general, a value of 256MB (or "256*1024*1024") is sufficient for
+Perl to compile at maximum optimization.
+
=head1 AUTHOR
Jeff Okamoto <okamoto@corp.hp.com>
@@ -275,6 +356,6 @@ With much assistance regarding shared libraries from Marc Sabatella.
=head1 DATE
-Version 0.6.2: 2001-02-02
+Version 0.6.3: 2001-05-16
=cut
diff --git a/cflags.SH b/cflags.SH
index d215255737..f76d7fbf5e 100755
--- a/cflags.SH
+++ b/cflags.SH
@@ -1,4 +1,4 @@
-case $CONFIG in
+case $PERL_CONFIG_SH in
'')
if test -f config.sh; then TOP=.;
elif test -f ../config.sh; then TOP=..;
@@ -28,7 +28,7 @@ $startsh
: In the following dollars and backticks do not need the extra backslash.
$spitshell >>cflags <<'!NO!SUBS!'
-case $CONFIGDOTSH in
+case $PERL_CONFIG_SH in
'')
if test -f config.sh; then TOP=.;
elif test -f ../config.sh; then TOP=..;
diff --git a/config_h.SH b/config_h.SH
index 9188b7991c..c0a9146cf0 100644
--- a/config_h.SH
+++ b/config_h.SH
@@ -4,7 +4,7 @@ esac
case "$CONFIG_H" in
'') CONFIG_H=config.h ;;
esac
-case $CONFIG in
+case $PERL_CONFIG_SH in
'')
if test -f $CONFIG_SH; then TOP=.;
elif test -f ../$CONFIG_SH; then TOP=..;
@@ -1062,7 +1062,13 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
* by Configure. You shouldn't rely on it too much; the specific
* feature tests from Configure are generally more reliable.
*/
+/* OSVERS:
+ * This symbol contains the version of the operating system, as determined
+ * by Configure. You shouldn't rely on it too much; the specific
+ * feature tests from Configure are generally more reliable.
+ */
#define OSNAME "$osname" /**/
+#define OSVERS "$osvers" /**/
/* MEM_ALIGNBYTES:
* This symbol contains the number of bytes required to align a
diff --git a/configpm b/configpm
index 6b5252cccc..b98bf8243b 100755
--- a/configpm
+++ b/configpm
@@ -60,7 +60,7 @@ $in_v = 0;
while (<>) {
next if m:^#!/bin/sh:;
- # Catch CONFIGDOTSH=true and PERL_VERSION=n line from Configure.
+ # Catch PERL_CONFIG_SH=true and PERL_VERSION=n line from Configure.
s/^(\w+)=(true|\d+)\s*$/$1='$2'\n/;
my ($k,$v) = ($1,$2);
# grandfather PATCHLEVEL and SUBVERSION and CONFIG
@@ -71,7 +71,7 @@ while (<>) {
elsif ($k eq 'PERL_SUBVERSION') {
push @v_others, "SUBVERSION='$v'\n";
}
- elsif ($k eq 'CONFIGDOTSH') {
+ elsif ($k eq 'PERL_CONFIG_SH') {
push @v_others, "CONFIG='$v'\n";
}
}
@@ -474,11 +474,11 @@ require $config_pm;
import Config;
die "$0: $config_pm not valid"
- unless $Config{'CONFIGDOTSH'} eq 'true';
+ unless $Config{'PERL_CONFIG_SH'} eq 'true';
die "$0: error processing $config_pm"
if defined($Config{'an impossible name'})
- or $Config{'CONFIGDOTSH'} ne 'true' # test cache
+ or $Config{'PERL_CONFIG_SH'} ne 'true' # test cache
;
die "$0: error processing $config_pm"
diff --git a/configure.com b/configure.com
index a1c26a71cb..209f4ecdfc 100644
--- a/configure.com
+++ b/configure.com
@@ -5580,7 +5580,7 @@ $ WC "vms_prefix='" + vms_prefix + "'" ! VMS specific
$ WC "vms_ver='" + vms_ver + "'" ! VMS specific
$ WC "voidflags='15'"
$ WC "xs_apiversion='" + version + "'"
-$ WC "CONFIGDOTSH='true'"
+$ WC "PERL_CONFIG_SH='true'"
$!
$! ##END WRITE NEW CONSTANTS HERE##
$!
diff --git a/dump.c b/dump.c
index 03d731d491..1b51b49cce 100644
--- a/dump.c
+++ b/dump.c
@@ -436,7 +436,14 @@ Perl_do_op_dump(pTHX_ I32 level, PerlIO *file, OP *o)
if (o->op_private & OPpTARGET_MY)
sv_catpv(tmpsv, ",TARGET_MY");
}
- if (o->op_type == OP_AASSIGN) {
+ else if (o->op_type == OP_LEAVESUB ||
+ o->op_type == OP_LEAVE ||
+ o->op_type == OP_LEAVESUBLV ||
+ o->op_type == OP_LEAVEWRITE) {
+ if (o->op_private & OPpREFCOUNTED)
+ sv_catpv(tmpsv, ",REFCOUNTED");
+ }
+ else if (o->op_type == OP_AASSIGN) {
if (o->op_private & OPpASSIGN_COMMON)
sv_catpv(tmpsv, ",COMMON");
if (o->op_private & OPpASSIGN_HASH)
@@ -453,6 +460,10 @@ Perl_do_op_dump(pTHX_ I32 level, PerlIO *file, OP *o)
sv_catpv(tmpsv, ",DELETE");
if (o->op_private & OPpTRANS_COMPLEMENT)
sv_catpv(tmpsv, ",COMPLEMENT");
+ if (o->op_private & OPpTRANS_IDENTICAL)
+ sv_catpv(tmpsv, ",IDENTICAL");
+ if (o->op_private & OPpTRANS_GROWS)
+ sv_catpv(tmpsv, ",GROWS");
}
else if (o->op_type == OP_REPEAT) {
if (o->op_private & OPpREPEAT_DOLIST)
@@ -474,8 +485,12 @@ Perl_do_op_dump(pTHX_ I32 level, PerlIO *file, OP *o)
sv_catpv(tmpsv, ",DB");
if (o->op_private & OPpENTERSUB_HASTARG)
sv_catpv(tmpsv, ",HASTARG");
+ if (o->op_private & OPpENTERSUB_NOPAREN)
+ sv_catpv(tmpsv, ",NOPAREN");
+ if (o->op_private & OPpENTERSUB_INARGS)
+ sv_catpv(tmpsv, ",INARGS");
}
- else
+ else {
switch (o->op_private & OPpDEREF) {
case OPpDEREF_SV:
sv_catpv(tmpsv, ",SV");
@@ -487,6 +502,9 @@ Perl_do_op_dump(pTHX_ I32 level, PerlIO *file, OP *o)
sv_catpv(tmpsv, ",HV");
break;
}
+ if (o->op_private & OPpMAYBE_LVSUB)
+ sv_catpv(tmpsv, ",MAYBE_LVSUB");
+ }
if (o->op_type == OP_AELEM || o->op_type == OP_HELEM) {
if (o->op_private & OPpLVAL_DEFER)
sv_catpv(tmpsv, ",LVAL_DEFER");
@@ -503,6 +521,12 @@ Perl_do_op_dump(pTHX_ I32 level, PerlIO *file, OP *o)
sv_catpv(tmpsv, ",BARE");
if (o->op_private & OPpCONST_STRICT)
sv_catpv(tmpsv, ",STRICT");
+ if (o->op_private & OPpCONST_ARYBASE)
+ sv_catpv(tmpsv, ",ARYBASE");
+ if (o->op_private & OPpCONST_WARNING)
+ sv_catpv(tmpsv, ",WARNING");
+ if (o->op_private & OPpCONST_ENTERED)
+ sv_catpv(tmpsv, ",ENTERED");
}
else if (o->op_type == OP_FLIP) {
if (o->op_private & OPpFLIP_LINENUM)
@@ -515,6 +539,48 @@ Perl_do_op_dump(pTHX_ I32 level, PerlIO *file, OP *o)
if (o->op_private & OPpLVAL_INTRO)
sv_catpv(tmpsv, ",INTRO");
}
+ else if (o->op_type == OP_GV) {
+ if (o->op_private & OPpEARLY_CV)
+ sv_catpv(tmpsv, ",EARLY_CV");
+ }
+ else if (o->op_type == OP_LIST) {
+ if (o->op_private & OPpLIST_GUESSED)
+ sv_catpv(tmpsv, ",GUESSED");
+ }
+ else if (o->op_type == OP_DELETE) {
+ if (o->op_private & OPpSLICE)
+ sv_catpv(tmpsv, ",SLICE");
+ }
+ else if (o->op_type == OP_EXISTS) {
+ if (o->op_private & OPpEXISTS_SUB)
+ sv_catpv(tmpsv, ",EXISTS_SUB");
+ }
+ else if (o->op_type == OP_SORT) {
+ if (o->op_private & OPpSORT_NUMERIC)
+ sv_catpv(tmpsv, ",NUMERIC");
+ if (o->op_private & OPpSORT_INTEGER)
+ sv_catpv(tmpsv, ",INTEGER");
+ if (o->op_private & OPpSORT_REVERSE)
+ sv_catpv(tmpsv, ",REVERSE");
+ }
+ else if (o->op_type == OP_THREADSV) {
+ if (o->op_private & OPpDONE_SVREF)
+ sv_catpv(tmpsv, ",SVREF");
+ }
+ else if (o->op_type == OP_OPEN || o->op_type == OP_BACKTICK) {
+ if (o->op_private & OPpOPEN_IN_RAW)
+ sv_catpv(tmpsv, ",IN_RAW");
+ if (o->op_private & OPpOPEN_IN_CRLF)
+ sv_catpv(tmpsv, ",IN_CRLF");
+ if (o->op_private & OPpOPEN_OUT_RAW)
+ sv_catpv(tmpsv, ",OUT_RAW");
+ if (o->op_private & OPpOPEN_OUT_CRLF)
+ sv_catpv(tmpsv, ",OUT_CRLF");
+ }
+ else if (o->op_type == OP_EXIT) {
+ if (o->op_private & OPpEXIT_VMSISH)
+ sv_catpv(tmpsv, ",EXIST_VMSISH");
+ }
if (o->op_flags & OPf_MOD && o->op_private & OPpLVAL_INTRO)
sv_catpv(tmpsv, ",INTRO");
if (SvCUR(tmpsv))
diff --git a/ext/B/B/Deparse.pm b/ext/B/B/Deparse.pm
index 221ca22b07..7b8bf13d1c 100644
--- a/ext/B/B/Deparse.pm
+++ b/ext/B/B/Deparse.pm
@@ -2962,13 +2962,12 @@ sub uninterp {
return $str;
}
-# the same, but treat $|, $), $( and $ at the end of the string differently
-sub re_uninterp {
- my($str) = @_;
-
+{
+my $bal;
+BEGIN {
use re "eval";
# Matches any string which is balanced with respect to {braces}
- my $bal = qr(
+ $bal = qr(
(?:
[^\\{}]
| \\\\
@@ -2976,6 +2975,11 @@ sub re_uninterp {
| \{(??{$bal})\}
)*
)x;
+}
+
+# the same, but treat $|, $), $( and $ at the end of the string differently
+sub re_uninterp {
+ my($str) = @_;
$str =~ s/
( ^|\G # $1
@@ -2998,11 +3002,34 @@ sub re_uninterp {
return $str;
}
+# This is for regular expressions with the /x modifier
+# We have to leave comments unmangled.
sub re_uninterp_extended {
- my ($str) = @_;
- $str =~ s/^([^#]*)/re_uninterp($1)/emg;
+ my($str) = @_;
+
+ $str =~ s/
+ ( ^|\G # $1
+ | [^\\]
+ )
+
+ ( # $2
+ (?:\\\\)*
+ )
+
+ ( # $3
+ ( \(\?\??\{$bal\}\) # $4 (skip over (?{}) and (??{}) blocks)
+ | \#[^\n]* # (skip over comments)
+ )
+ | [\$\@]
+ (?!\||\)|\(|$)
+ | \\[uUlLQE]
+ )
+
+ /length($4) ? "$1$2$4" : "$1$2\\$3"/xeg;
+
return $str;
}
+}
# character escapes, but not delimiters that might need to be escaped
sub escape_str { # ASCII, UTF8
@@ -3020,6 +3047,8 @@ sub escape_str { # ASCII, UTF8
return $str;
}
+# For regexes with the /x modifier.
+# Leave whitespace unmangled.
sub escape_extended_re {
my($str) = @_;
$str =~ s/(.)/ord($1)>255 ? sprintf("\\x{%x}", ord($1)) : $1/eg;
@@ -3153,7 +3182,7 @@ sub dq {
my $first = $self->dq($op->first);
my $last = $self->dq($op->last);
- # Disambiguate "${foo}bar", "${foo}{bar}", "${foo}[1]"
+ # Disambiguate "${foo}bar", "${foo}{bar}", "${foo}[1]"
($last =~ /^[A-Z\\\^\[\]_?]/ &&
$first =~ s/([\$@])\^$/${1}{^}/) # "${^}W" etc
|| ($last =~ /^[{\[\w_]/ &&
@@ -3458,13 +3487,13 @@ sub re_dq {
} elsif ($type eq "concat") {
my $first = $self->re_dq($op->first, $extended);
my $last = $self->re_dq($op->last, $extended);
+
# Disambiguate "${foo}bar", "${foo}{bar}", "${foo}[1]"
- if ($last =~ /^[A-Z\\\^\[\]_?]/) {
- $first =~ s/([\$@])\^$/${1}{^}/;
- }
- elsif ($last =~ /^[{\[\w]/) {
- $first =~ s/([\$@])([A-Za-z_]\w*)$/${1}{$2}/;
- }
+ ($last =~ /^[A-Z\\\^\[\]_?]/ &&
+ $first =~ s/([\$@])\^$/${1}{^}/) # "${^}W" etc
+ || ($last =~ /^[{\[\w_]/ &&
+ $first =~ s/([\$@])([A-Za-z_]\w*)$/${1}{$2}/);
+
return $first . $last;
} elsif ($type eq "uc") {
return '\U' . $self->re_dq($op->first->sibling, $extended) . '\E';
@@ -3655,10 +3684,17 @@ sub pp_subst {
$repl = $self->dq($repl);
}
}
+ my $extended = ($op->pmflags & PMf_EXTENDED);
if (null $kid) {
- $re = re_uninterp(escape_str(re_unback($op->precomp)));
+ my $unbacked = re_unback($op->precomp);
+ if ($extended) {
+ $re = re_uninterp_extended(escape_extended_re($unbacked));
+ }
+ else {
+ $re = re_uninterp(escape_str($unbacked));
+ }
} else {
- $re = $self->deparse($kid, 1);
+ ($re) = $self->regcomp($kid, 1, $extended);
}
$flags .= "e" if $op->pmflags & PMf_EVAL;
$flags .= "g" if $op->pmflags & PMf_GLOBAL;
@@ -3666,7 +3702,7 @@ sub pp_subst {
$flags .= "m" if $op->pmflags & PMf_MULTILINE;
$flags .= "o" if $op->pmflags & PMf_KEEP;
$flags .= "s" if $op->pmflags & PMf_SINGLELINE;
- $flags .= "x" if $op->pmflags & PMf_EXTENDED;
+ $flags .= "x" if $extended;
$flags = $substwords{$flags} if $substwords{$flags};
if ($binop) {
return $self->maybe_parens("$var =~ s"
@@ -4081,11 +4117,16 @@ The obvious fix doesn't work, because these are different:
=item *
Constants (other than simple strings or numbers) don't work properly.
-Examples that fail include:
+Pathological examples that fail (and probably always will) include:
use constant E2BIG => ($!=7);
use constant x=>\$x; print x
+The following could (and should) be made to work:
+
+ use constant regex => qr/blah/;
+ print regex;
+
=item *
An input file that uses source filtering probably won't be deparsed into
diff --git a/ext/Thread/Thread.xs b/ext/Thread/Thread.xs
index cb2e395051..b81ee26d9c 100644
--- a/ext/Thread/Thread.xs
+++ b/ext/Thread/Thread.xs
@@ -279,10 +279,19 @@ newthread (pTHX_ SV *startsv, AV *initargs, char *classname)
if (!attr_inited) {
attr_inited = 1;
err = pthread_attr_init(&attr);
+# ifdef THREAD_CREATE_NEEDS_STACK
+ if (err == 0)
+ err = pthread_attr_setstacksize(&attr, THREAD_CREATE_NEEDS_STACK);
+ if (err)
+ croak("panic: pthread_attr_setstacksize failed");
+#else
+ croak("panic: can't pthread_attr_setstacksize");
+# endif
# ifdef PTHREAD_ATTR_SETDETACHSTATE
if (err == 0)
err = PTHREAD_ATTR_SETDETACHSTATE(&attr, attr_joinable);
-
+ if (err)
+ croak("panic: pthread_attr_setdetachstate failed");
# else
croak("panic: can't pthread_attr_setdetachstate");
# endif
diff --git a/ext/Time/HiRes/HiRes.pm b/ext/Time/HiRes/HiRes.pm
index 0f9d07b54b..0ff4798576 100644
--- a/ext/Time/HiRes/HiRes.pm
+++ b/ext/Time/HiRes/HiRes.pm
@@ -262,6 +262,12 @@ Here is an example of using NVtime from C:
myNVtime = (double(*)()) SvIV(*svp);
printf("The current time is: %f\n", (*myNVtime)());
+=head1 CAVEATS
+
+Notice that the core time() maybe rounding rather than truncating.
+What this means that the core time() may be giving time one second
+later than gettimeofday(), also known as Time::HiRes::time().
+
=head1 AUTHORS
D. Wegscheid <wegscd@whirlpool.com>
diff --git a/hints/dgux.sh b/hints/dgux.sh
index 9a6f7a4879..4f5e03ec15 100644
--- a/hints/dgux.sh
+++ b/hints/dgux.sh
@@ -1,7 +1,7 @@
-# $Id: dgux.sh,v 1.8 1996-11-29 18:16:43-05 roderick Exp $
+# $Id: dgux.sh,v 1.9 2001-05-07 00:06:00-05 Takis Exp $
-# This is a hints file for DGUX, which is Data General's Unix. It was
-# originally developed with version 5.4.3.10 of the OS, and then was
+# This is a hints file for DGUX, which is EMC's Data General's Unix. It
+# was originally developed with version 5.4.3.10 of the OS, and then was
# later updated running under version 4.11.2 (running on m88k hardware).
# The gross features should work with versions going back to 2.nil but
# some tweaking will probably be necessary.
@@ -16,57 +16,76 @@
#
# -Roderick Schertler <roderick@argon.org>
-# Here are the things from some old DGUX hints files which are different
-# from what's in here now. I don't know the exact reasons that most of
-# these settings were in the hints files, presumably they can be chalked
-# up to old Configure inadequacies and changes in the OS headers and the
-# like. These settings might make a good place to start looking if you
-# have problems.
-#
-# This was specified the the 4.036 hints file. That hints file didn't
-# say what version of the OS it was developed using.
-#
-# cppstdin='/lib/cpp'
-#
-# The 4.036 and 5.001 hints files both contained these. The 5.001 hints
-# file said it was developed with version 2.01 of DGUX.
-#
-# gidtype='gid_t'
-# groupstype='gid_t'
-# uidtype='uid_t'
-# d_index='define'
-# cc='gcc'
-#
-# These were peculiar to the 5.001 hints file.
-#
-# ccflags='-D_POSIX_SOURCE -D_DGUX_SOURCE'
-#
-# # an ugly hack, since the Configure test for "gcc -P -" hangs.
-# # can't just use 'cppstdin', since our DG has a broken cppstdin :-(
-# cppstdin=`cd ..; pwd`/cppstdin
-# cpprun=`cd ..; pwd`/cppstdin
-#
-# One last note: The 5.001 hints file said "you don't want to use
-# /usr/ucb/cc" in the place at which it set cc to gcc. That in
-# particular baffles me, as I used to have 2.01 loaded and my memory
-# is telling me that even then /usr/ucb was a symlink to /usr/bin.
-
-
# The standard system compiler is gcc, but invoking it as cc changes its
# behavior. I have to pick one name or the other so I can get the
# dynamic loading switches right (they vary depending on this). I'm
# picking gcc because there's no way to get at the optimization options
# and so on when you call it cc.
-case $cc in
- '')
- cc=gcc
- case $optimize in
- '') optimize=-O2;;
- esac
- ;;
+
+##########################################
+# Modified by Takis Psarogiannakopoulos
+# Universirty of Cambridge
+# Centre for Mathematical Sciences
+# Department of Pure Mathematics
+# Wilberforce road
+# Cambridge CB3 0WB , UK
+# e-mail <takis@xfree86.org>
+# Use GCC-2.95.2/3 rev (DG/UX) for threads
+# This compiler supports the -pthread switch
+# to link correctly DG/UX 's -lthread.
+###########################################
+
+cc=gcc
+ccflags="-DDGUX -D_DGUX_SOURCE"
+# Debug build with GNU as,ld and -gstabs+
+# ccflags="-DDGUX -D_DGUX_SOURCE -gstabs+"
+# Dummy ; always compile with -O2 on GCC 2.95.2/3 rev (DG/UX)
+optimize="-mno-legend -O2"
+
+archname="ix86-dgux"
+libpth="/usr/lib"
+
+#####################################
+# <takis@xfree86.org>
+# Change this if you want.
+# prefix =/usr/local
+#####################################
+
+prefix=/usr/local
+perlpath="$prefix/bin/perl57"
+startperl="#! $prefix/bin/perl57"
+privlib="$prefix/lib/perl57"
+man1dir="$prefix/man/man1"
+man3dir="$prefix/man/man3"
+
+sitearch="$prefix/lib/perl57/$archname"
+sitelib="$prefix/lib/perl57"
+
+#Do not overwrite by default /usr/bin/perl of DG/UX
+installusrbinperl="$undef"
+
+# Configure may fail to find lstat()
+# function in <sys/stat.h>.
+d_lstat=define
+
+# Internal malloc is needed for correct operation
+# of perl-5.7.x
+# DG/UX native malloc is causing problems.
+# Some perl tests they failing badly.
+# I have no time to investigate more.
+# <takis@xfree86.org>
+
+case "$usemymalloc" in
+'') usemymalloc='y' ;;
esac
-usevfork=true
+case "$uselongdouble" in
+'') uselongdouble='y' ;;
+esac
+
+#### No for threads ???? #####
+#usevfork=true
+usevfork=false
# DG has this thing set up with symlinks which point to different places
# depending on environment variables (see elink(5)) and the compiler and
@@ -117,20 +136,99 @@ done
plibpth="$plibpth $sde_path/$sde/usr/lib"
unset sde_path default_sde sde
+#####################################
+# <takis@xfree86.org>
+#####################################
+
+libperl="libperl57.so"
+
# Many functions (eg, gethostent(), killpg(), getpriority(), setruid()
# dbm_*(), and plenty more) are defined in -ldgc. Usually you don't
# need to know this (it seems that libdgc.so is searched automatically
# by ld), but Configure needs to check it otherwise it will report all
# those functions as missing.
-libswanted="dgc $libswanted"
+
+#####################################
+# <takis@xfree86.org>
+#####################################
+
+# libswanted="dgc gdbm $libswanted"
+#libswanted="dbm posix $libswanted"
+# Remove malloc since we use the internal perl one.
+libswanted="dbm posix resolv socket nsl dl m"
+
+#####################################
+# <takis@xfree86.org>
+#####################################
+
+mydomain='.localhost'
+cf_by=`(whoami) 2>/dev/null`
+cf_email="$cf_by@localhost"
# Dynamic loading works using the dlopen() functions. Note that dlfcn.h
# used to be broken, it declared _dl*() rather than dl*(). This was the
# case up to 3.10, it has been fixed in 4.11. I'm not sure if it was
# fixed in 4.10. If you have the older header just ignore the warnings
# (since pointers and integers have the same format on m88k).
-usedl=true
+
+# usedl=true
+usedl=false
+
# For cc rather than gcc the flags would be `-K PIC' for compiling and
# -G for loading. I haven't tested this.
-cccdlflags=-fpic
-lddlflags=-shared
+
+#####################################
+# <takis@xfree86.org>
+# Use -fPIC instead -fpic
+#####################################
+
+cccdlflags=-fPIC
+#We must use gcc
+ld="gcc"
+lddlflags="-shared"
+
+############################################################################
+# DGUX Posix 4A Draft 10 Thread support
+# <takis@xfree86.org>
+# use Configure -Dusethreads to enable
+############################################################################
+
+cat > UU/usethreads.cbu <<'EOCBU'
+case "$usethreads" in
+$define|true|[yY]*)
+ ccflags="$ccflags"
+ shift
+ # DG/UX's sched_yield is in -lrte
+ # Remove malloc since we use the internal perl one.
+ libswanted="dbm posix resolv socket nsl dl m rte"
+ archname="ix86-dgux-thread"
+ sitearch="$prefix/lib/perl57/$archname"
+ sitelib="$prefix/lib/perl57"
+ case "$cc" in
+ *gcc*)
+ #### Use GCC -2.95.2/3 rev (DG/UX) and -pthread
+ #### Otherwise take out the switch -pthread
+ #### And add manually the -D_POSIX4A_DRAFT10_SOURCE flag.
+ ld="gcc"
+ ccflags="$ccflags -D_POSIX4A_DRAFT10_SOURCE"
+ # Debug build : use -DS flag on command line perl
+ # ccflags="$ccflags -DDEBUGGING -D_POSIX4A_DRAFT10_SOURCE -pthread"
+ cccdlflags='-fPIC'
+ lddlflags="-shared"
+ #### Use GCC -2.95.2/3 rev (DG/UX) and -pthread
+ #### Otherwise take out the switch -pthread
+ #### And add manually the -lthread library.
+ ldflags="$ldflags -pthread"
+ ;;
+
+ *)
+ echo "Not supported DG/UX cc and threads !"
+ ;;
+ esac
+esac
+EOCBU
+
+# "./Configure -d" can't figure this out easily
+d_suidsafe='define'
+
+###################################################
diff --git a/hints/hpux.sh b/hints/hpux.sh
index 5b0dd7ea54..da8485f717 100644
--- a/hints/hpux.sh
+++ b/hints/hpux.sh
@@ -45,19 +45,6 @@ set `echo "X $libswanted " | sed -e 's/ ld / /' -e 's/ dbm / /' -e 's/ BSD / /'
shift
libswanted="$*"
-# By setting the deferred flag below, this means that if you run perl
-# on a system that does not have the required shared library that you
-# linked it with, it will die when you try to access a symbol in the
-# (missing) shared library. If you would rather know at perl startup
-# time that you are missing an important shared library, switch the
-# comments so that immediate, rather than deferred loading is
-# performed. Even with immediate loading, you can postpone errors for
-# undefined (or multiply defined) routines until actual access by
-# adding the "nonfatal" option.
-# ccdlflags="-Wl,-E -Wl,-B,immediate $ccdlflags"
-# ccdlflags="-Wl,-E -Wl,-B,immediate,-B,nonfatal $ccdlflags"
-ccdlflags="-Wl,-E -Wl,-B,deferred $ccdlflags"
-
cc=${cc:-cc}
ar=/usr/bin/ar # Yes, truly override. We do not want the GNU ar.
full_ar=$ar # I repeat, no GNU ar. arrr.
@@ -71,13 +58,34 @@ case "$prefix" in
"") prefix='/opt/perl5' ;;
esac
+ gnu_as=no
+ gnu_ld=no
case `$cc -v 2>&1`"" in
*gcc*) ccisgcc="$define"
- ccflags="$cc_cppflags -Wl,+vnocompatwarnings"
+ ccflags="$cc_cppflags"
case "`getconf KERNEL_BITS 2>/dev/null`" in
- *64*) ldflags="$ldflags -Wl,+vnocompatwarnings"
- ccflags="$ccflags -Wl,+vnocompatwarnings -Wa,+DA2.0"
- ;;
+ *64*)
+ echo "main(){}">try.c
+ # gcc with gas will not accept +DA2.0
+ case "`$cc -c -Wa,+DA2.0 try.c 2>&1`" in
+ *"+DA2.0"*) # gas
+ gnu_as=yes
+ ;;
+ *) # HPas
+ ccflags="$ccflags -Wa,+DA2.0"
+ ;;
+ esac
+ # gcc with gld will not accept +vnocompatwarnings
+ case "`$cc -o try -Wl,+vnocompatwarnings try.c 2>&1`" in
+ *"+vnocompat"*) # gld
+ gnu_ld=yes
+ ;;
+ *) # HPld
+ ldflags="$ldflags -Wl,+vnocompatwarnings"
+ ccflags="$ccflags -Wl,+vnocompatwarnings"
+ ;;
+ esac
+ ;;
esac
;;
*) ccisgcc=''
@@ -99,6 +107,25 @@ toke_cflags='ccflags="$ccflags -DARG_ZERO_IS_SCRIPT"'
### 64 BITNESS
+# Some gcc versions do native 64 bit long (e.g. 2.9-hppa-000310)
+# We have to force 64bitness to go search the right libraries
+ gcc_64native=no
+case "$ccisgcc" in
+ $define|true|[Yy])
+ echo 'int main(){long l;printf("%d\n",sizeof(l));}'>try.c
+ $cc -o try $ccflags $ldflags try.c
+ if [ "`try`" = "8" ]; then
+ cat <<EOM >&4
+
+*** This version of gcc uses 64 bit longs. -Duse64bitall is
+*** implicitly set to enable continuation
+EOM
+ use64bitall=$define
+ gcc_64native=yes
+ fi
+ ;;
+ esac
+
case "$use64bitall" in
$define|true|[yY]*) use64bitint="$define" ;;
esac
@@ -149,8 +176,23 @@ EOM
exit 1
fi
- ccflags="$ccflags +DD64"
- ldflags="$ldflags +DD64"
+ case "$ccisgcc" in
+ $define|true|[Yy])
+ # For the moment, don't care that it ain't supported (yet)
+ # by gcc (up to and including 2.95.3), cause it'll crash
+ # anyway. Expect auto-detection of 64-bit enabled gcc on
+ # HP-UX soon, including a user-friendly exit
+ case $gcc_64native in
+ no) ccflags="$ccflags -mlp64"
+ ldflags="$ldflags -Wl,+DD64"
+ ;;
+ esac
+ ;;
+ *)
+ ccflags="$ccflags +DD64"
+ ldflags="$ldflags +DD64"
+ ;;
+ esac
# Reset the library checker to make sure libraries
# are the right type
@@ -173,6 +215,23 @@ EOM
;;
esac
+# By setting the deferred flag below, this means that if you run perl
+# on a system that does not have the required shared library that you
+# linked it with, it will die when you try to access a symbol in the
+# (missing) shared library. If you would rather know at perl startup
+# time that you are missing an important shared library, switch the
+# comments so that immediate, rather than deferred loading is
+# performed. Even with immediate loading, you can postpone errors for
+# undefined (or multiply defined) routines until actual access by
+# adding the "nonfatal" option.
+# ccdlflags="-Wl,-E -Wl,-B,immediate $ccdlflags"
+# ccdlflags="-Wl,-E -Wl,-B,immediate,-B,nonfatal $ccdlflags"
+if [ "$gnu_ld" = "yes" ]; then
+ ccdlflags="-Wl,-E $ccdlflags"
+else
+ ccdlflags="-Wl,-E -Wl,-B,deferred $ccdlflags"
+ fi
+
### COMPILER SPECIFICS
diff --git a/installman b/installman
index 2b6e6275a2..dad91820cf 100755
--- a/installman
+++ b/installman
@@ -67,6 +67,7 @@ $opts{verbose} ||= $opts{V} || $opts{notify};
$packlist = ExtUtils::Packlist->new("$Config{installarchlib}/.packlist");
+
# Install the main pod pages.
runpod2man('pod', $opts{man1dir}, $opts{man1ext});
@@ -74,22 +75,17 @@ runpod2man('pod', $opts{man1dir}, $opts{man1ext});
runpod2man('lib', $opts{man3dir}, $opts{man3ext});
# Install the pods embedded in the installed scripts
-runpod2man('utils', $opts{man1dir}, $opts{man1ext}, 'c2ph', 'h2ph', 'h2xs',
- 'perlcc', 'perldoc', 'perlbug', 'pl2pm', 'splain', 'dprofpp');
-runpod2man('x2p', $opts{man1dir}, $opts{man1ext}, 's2p', 'a2p.pod',
- 'find2perl');
-runpod2man('pod', $opts{man1dir}, $opts{man1ext}, 'pod2man', 'pod2html',
- 'pod2text', 'pod2usage', 'podchecker', 'podselect');
-
-# It would probably be better to have this page linked
-# to the c2ph man page. Or, this one could say ".so man1/c2ph.1",
-# but then it would have to pay attention to $opts{man1dir} and $opts{man1ext}.
-runpod2man('utils', $opts{man1dir}, $opts{man1ext}, 'pstruct');
-
-# Similar concern as with pstruct/c2ph above: psed is s2p by other name.
-runpod2man('x2p', $opts{man1dir}, $opts{man1ext}, 'psed');
-
-runpod2man('lib/ExtUtils', $opts{man1dir}, $opts{man1ext}, 'xsubpp');
+open UTILS, "utils.lst" or die "Can't open 'utils.lst': $!";
+while (<UTILS>) {
+ next if /^#/;
+ chomp;
+ $_ = $1 if /#.*pod\s*=\s*(\S+)/;
+ my ($where, $what) = m|^(.*?)/(\S+)|;
+ runpod2man($where, $opts{man1dir}, $opts{man1ext}, $what);
+ if (($where, $what) = m|#.*link\s*=\s*(\S+)/(\S+)|) {
+ runpod2man($where, $opts{man1dir}, $opts{man1ext}, $what);
+ }
+}
sub runpod2man {
# @script is scripts names if we are installing manpages embedded
diff --git a/installperl b/installperl
index 6adcdf2992..6bfbdc9a92 100755
--- a/installperl
+++ b/installperl
@@ -63,12 +63,20 @@ while (@ARGV) {
}
$versiononly = 1 if $Config{versiononly} && !defined $versiononly;
-
-my @scripts = qw(utils/c2ph utils/h2ph utils/h2xs utils/perlbug utils/perldoc
- utils/pl2pm utils/splain utils/perlcc utils/dprofpp
- x2p/s2p x2p/find2perl
- pod/pod2man pod/pod2html pod/pod2latex pod/pod2text
- pod/pod2usage pod/podchecker pod/podselect);
+my (@scripts, @tolink);
+open SCRIPTS, "utils.lst" or die "Can't open utils.lst: $!";
+while (<SCRIPTS>) {
+ next if /^#/;
+ next if /#\s*pod\s*=/; # Binary programs need separate treatment
+ chomp;
+ if (/(\S*)\s*#\s*link\s*=\s*(\S*)/) {
+ push @scripts, $1;
+ push @tolink, [$1, $2];
+ } else {
+ push @scripts, $_;
+ }
+}
+close SCRIPTS;
if ($scr_ext) { @scripts = map { "$_$scr_ext" } @scripts; }
@@ -417,11 +425,12 @@ if (! $versiononly) {
chmod(0755, "$installscript/$base");
}
- # pstruct should be a link to c2ph
- script_alias($installscript, 'c2ph', 'pstruct', $scr_ext);
-
- # psed should be a link to s2p
- script_alias($installscript, 's2p', 'psed', $scr_ext);
+ for (@tolink) {
+ my ($from, $to)= @$_;
+ (my $frbase = $from) =~ s#.*/##;
+ (my $tobase = $to) =~ s#.*/##;
+ script_alias($installscript, $frbase, $tobase, $scr_ext);
+ }
}
# Install pod pages. Where? I guess in $installprivlib/pod
diff --git a/lib/Switch.pm b/lib/Switch.pm
index 2a3093c359..910002eb92 100644
--- a/lib/Switch.pm
+++ b/lib/Switch.pm
@@ -4,7 +4,7 @@ use strict;
use vars qw($VERSION);
use Carp;
-$VERSION = '2.02';
+$VERSION = '2.03';
# LOAD FILTERING MODULE...
@@ -24,7 +24,7 @@ sub import
$DB::single = 1;
$fallthrough = grep /\bfallthrough\b/, @_;
$offset = (caller)[2]+1;
- filter_add({}) unless @_>1 && $_[1] ne '__';
+ filter_add({}) unless @_>1 && $_[1] eq 'noimport';
my $pkg = caller;
no strict 'refs';
for ( qw( on_defined on_exists ) )
@@ -182,11 +182,11 @@ sub in
my @numy;
for my $nextx ( @$x )
{
- my $numx = ref($nextx) || (~$nextx&$nextx) eq 0;
+ my $numx = ref($nextx) || defined $nextx && (~$nextx&$nextx) eq 0;
for my $j ( 0..$#$y )
{
my $nexty = $y->[$j];
- push @numy, ref($nexty) || (~$nexty&$nexty) eq 0
+ push @numy, ref($nexty) || defined $nexty && (~$nexty&$nexty) eq 0
if @numy <= $j;
return 1 if $numx && $numy[$j] && $nextx==$nexty
|| $nextx eq $nexty;
@@ -222,12 +222,13 @@ sub switch(;$)
return $s_val->($c_val);
};
}
- elsif ($s_ref eq "" && (~$s_val&$s_val) eq 0) # NUMERIC SCALAR
+ elsif ($s_ref eq "" && defined $s_val && (~$s_val&$s_val) eq 0) # NUMERIC SCALAR
{
$::_S_W_I_T_C_H =
sub { my $c_val = $_[0];
my $c_ref = ref $c_val;
return $s_val == $c_val if $c_ref eq ""
+ && defined $c_val
&& (~$c_val&$c_val) eq 0;
return $s_val eq $c_val if $c_ref eq "";
return in([$s_val],$c_val) if $c_ref eq 'ARRAY';
@@ -454,8 +455,8 @@ Switch - A switch statement for Perl
=head1 VERSION
-This document describes version 2.02 of Switch,
-released April 26, 2001.
+This document describes version 2.03 of Switch,
+released May 15, 2001.
=head1 SYNOPSIS
diff --git a/makeaperl.SH b/makeaperl.SH
index 45812ba7dc..80c0f21319 100644
--- a/makeaperl.SH
+++ b/makeaperl.SH
@@ -1,4 +1,4 @@
-case $CONFIGDOTSH in
+case $PERL_CONFIG_SH in
'')
if test -f config.sh; then TOP=.;
elif test -f ../config.sh; then TOP=..;
diff --git a/makedepend.SH b/makedepend.SH
index 579be0b748..ec21795429 100755
--- a/makedepend.SH
+++ b/makedepend.SH
@@ -1,5 +1,5 @@
#! /bin/sh
-case $CONFIGDOTSH in
+case $PERL_CONFIG_SH in
'')
if test -f config.sh; then TOP=.;
elif test -f ../config.sh; then TOP=..;
@@ -41,7 +41,7 @@ esac
export PATH || (echo "OOPS, this isn't sh. Desperation time. I will feed myself to sh."; sh \$0; kill \$\$)
-case $CONFIGDOTSH in
+case $PERL_CONFIG_SH in
'')
if test -f config.sh; then TOP=.;
elif test -f ../config.sh; then TOP=..;
diff --git a/makedir.SH b/makedir.SH
index d1650e789f..19a6ad61b6 100755
--- a/makedir.SH
+++ b/makedir.SH
@@ -1,4 +1,4 @@
-case $CONFIGDOTSH in
+case $PERL_CONFIG_SH in
'')
if test ! -f config.sh; then
ln ../config.sh . || \
diff --git a/myconfig.SH b/myconfig.SH
index e80dfb5b5f..59a173d0d0 100644
--- a/myconfig.SH
+++ b/myconfig.SH
@@ -1,4 +1,4 @@
-case $CONFIGDOTSH in
+case $PERL_CONFIG_SH in
'')
if test -f config.sh; then TOP=.;
elif test -f ../config.sh; then TOP=..;
diff --git a/patchlevel.h b/patchlevel.h
index 49c96184f8..6b5ddeae7a 100644
--- a/patchlevel.h
+++ b/patchlevel.h
@@ -70,7 +70,7 @@
#if !defined(PERL_PATCHLEVEL_H_IMPLICIT) && !defined(LOCAL_PATCH_COUNT)
static char *local_patches[] = {
NULL
- ,"DEVEL10104"
+ ,"DEVEL10132"
,NULL
};
diff --git a/perl.c b/perl.c
index 0151338c85..64aa4c9101 100644
--- a/perl.c
+++ b/perl.c
@@ -2287,9 +2287,22 @@ Perl_moreswitches(pTHX_ char *s)
s++;
return s;
case 'v':
+#if !defined(DGUX)
PerlIO_printf(PerlIO_stdout(),
Perl_form(aTHX_ "\nThis is perl, v%"VDf" built for %s",
PL_patchlevel, ARCHNAME));
+#else /* DGUX */
+/* Adjust verbose output as in the perl that ships with the DG/UX OS from EMC */
+ PerlIO_printf(PerlIO_stdout(),
+ Perl_form(aTHX_ "\nThis is perl, version %vd\n", PL_patchlevel));
+ PerlIO_printf(PerlIO_stdout(),
+ Perl_form(aTHX_ " built under %s at %s %s\n",
+ OSNAME, __DATE__, __TIME__));
+ PerlIO_printf(PerlIO_stdout(),
+ Perl_form(aTHX_ " OS Specific Release: %s\n",
+ OSVERS));
+#endif /* !DGUX */
+
#if defined(LOCAL_PATCH_COUNT)
if (LOCAL_PATCH_COUNT > 0)
PerlIO_printf(PerlIO_stdout(),
diff --git a/pod/buildtoc.PL b/pod/buildtoc.PL
index 26be6e854b..6c43035889 100644
--- a/pod/buildtoc.PL
+++ b/pod/buildtoc.PL
@@ -148,6 +148,7 @@ if (-d "pod") {
perlhist
perldelta
+ perl572delta
perl571delta
perl570delta
perl56delta
@@ -158,6 +159,7 @@ if (-d "pod") {
perlamiga
perlbs2000
perlcygwin
+ perldgux
perldos
perlepoc
perlhpux
@@ -178,6 +180,7 @@ if (-d "pod") {
perlamiga
perlbs2000
perlcygwin
+ perldgux
perldos
perlepoc
perlhpux
diff --git a/pod/perl.pod b/pod/perl.pod
index a1bc034142..c047d347d5 100644
--- a/pod/perl.pod
+++ b/pod/perl.pod
@@ -102,6 +102,7 @@ For ease of access, the Perl manual has been split up into several sections:
perlhist Perl history records
perldelta Perl changes since previous version
+ perl572delta Perl changes in version 5.7.2
perl571delta Perl changes in version 5.7.1
perl570delta Perl changes in version 5.7.0
perl56delta Perl changes in version 5.6
@@ -112,6 +113,7 @@ For ease of access, the Perl manual has been split up into several sections:
perlamiga Perl notes for Amiga
perlbs2000 Perl notes for POSIX-BC BS2000
perlcygwin Perl notes for Cygwin
+ perldgux Perl notes for DG/UX
perldos Perl notes for DOS
perlepoc Perl notes for EPOC
perlhpux Perl notes for HP-UX
diff --git a/pod/perl572delta.pod b/pod/perl572delta.pod
index bce73285c8..fe1eed0d4f 100644
--- a/pod/perl572delta.pod
+++ b/pod/perl572delta.pod
@@ -27,6 +27,15 @@ for more information.
=head1 Incompatible Changes
+=head1 Future Deprecations
+
+The current user-visible implementation of pseudo-hashes (the weird
+use of the first array element) is deprecated starting from Perl 5.8.0
+and will be removed in Perl 5.10.0, and the feature will be implemented
+differently. Not only is the current interface rather ugly, but the
+current implementation slows down normal array and hash use quite
+noticeably. The 'fields' pragma interface will remain available.
+
=head1 Core Enhancements
=head1 Modules and Pragmata
diff --git a/pod/perldiag.pod b/pod/perldiag.pod
index 7b69b63e89..19ac8f31b4 100644
--- a/pod/perldiag.pod
+++ b/pod/perldiag.pod
@@ -567,10 +567,10 @@ C<-i.bak>, or some such.
characters and Perl was unable to create a unique filename during
inplace editing with the B<-i> switch. The file was ignored.
-=item Can't do {n,m} with n > m before << HERE in regex m/%s/
+=item Can't do {n,m} with n > m in regex; marked by <-- HERE in m/%s/
(F) Minima must be less than or equal to maxima. If you really want your
-regexp to match something 0 times, just put {0}. The << HERE shows in the
+regexp to match something 0 times, just put {0}. The <-- HERE shows in the
regular expression about where the problem was discovered. See L<perlre>.
=item Can't do setegid!
@@ -1363,12 +1363,13 @@ Check the #! line, or manually feed your script into Perl yourself.
END subroutine. Processing of the remainder of the queue of such
routines has been prematurely ended.
-=item false [] range "%s" in regexp
+=item False [] range "%s" in regex; marked by <-- HERE in m/%s/
(W regexp) A character class range must start and end at a literal
-character, not another character class like C<\d> or C<[:alpha:]>. The
-"-" in your false range is interpreted as a literal "-". Consider
-quoting the "-", "\-". See L<perlre>.
+character, not another character class like C<\d> or C<[:alpha:]>. The "-"
+in your false range is interpreted as a literal "-". Consider quoting the
+"-", "\-". The <-- HERE shows in the regular expression about where the
+problem was discovered. See L<perlre>.
=item Fatal VMS error at %s, line %d
@@ -1417,11 +1418,11 @@ some time before now. Check your control flow. flock() operates on
filehandles. Are you attempting to call flock() on a dirhandle by the
same name?
-=item Quantifier follows nothing before << HERE in regex m/%s/
+=item Quantifier follows nothing in regex; marked by <-- HERE in m/%s/
(F) You started a regular expression with a quantifier. Backslash it if you
-meant it literally. The << HERE shows in the regular expression about where the
-problem was discovered. See L<perlre>.
+meant it literally. The <-- HERE shows in the regular expression about
+where the problem was discovered. See L<perlre>.
=item Format not terminated
@@ -1667,10 +1668,10 @@ transparently promotes all numbers to a floating point representation
internally--subject to loss of precision errors in subsequent
operations.
-=item Internal disaster before << HERE in regex m/%s/
+=item Internal disaster in regex; marked by <-- HERE in m/%s/
(P) Something went badly wrong in the regular expression parser.
-The << HERE shows in the regular expression about where the problem was
+The <-- HERE shows in the regular expression about where the problem was
discovered.
@@ -1683,10 +1684,11 @@ L<perlvms/"exec LIST">). Somehow, this count has become scrambled, so
Perl is making a guess and treating this C<exec> as a request to
terminate the Perl script and execute the specified command.
-=item Internal urp before << HERE in regex m/%s/
+=item Internal urp in regex; marked by <-- HERE in m/%s/
-(P) Something went badly awry in the regular expression parser. The <<<HERE
-shows in the regular expression about where the problem was discovered.
+(P) Something went badly awry in the regular expression parser. The
+<-- HERE shows in the regular expression about where the problem was
+discovered.
=item %s (...) interpreted as function
@@ -1711,14 +1713,15 @@ recognized by Perl or by a user-supplied handler. See L<attributes>.
(W printf) Perl does not understand the given format conversion. See
L<perlfunc/sprintf>.
-=item invalid [] range "%s" in regexp
+=item Invalid [] range "%s" in regex; marked by <-- HERE in m/%s/
(F) The range specified in a character class had a minimum character
-greater than the maximum character. One possibility is that you
-forgot the C<{}> from your ending C<\x{}> - C<\x> without the curly
-braces can go only up to C<ff>. See L<perlre>.
+greater than the maximum character. One possibility is that you forgot the
+C<{}> from your ending C<\x{}> - C<\x> without the curly braces can go only
+up to C<ff>. The <-- HERE shows in the regular expression about where the
+problem was discovered. See L<perlre>.
-=item invalid [] range "%s" in transliteration operator
+=item Invalid [] range "%s" in transliteration operator
(F) The range specified in the tr/// or y/// operator had a minimum
character greater than the maximum character. See L<perlop>.
@@ -1813,11 +1816,11 @@ instead on the filehandle.)
values cannot be returned in subroutines used in lvalue context. See
L<perlsub/"Lvalue subroutines">.
-=item Lookbehind longer than %d not implemented before << HERE %s
+=item Lookbehind longer than %d not implemented in regex; marked by <-- HERE in m/%s/
(F) There is currently a limit on the length of string which lookbehind can
-handle. This restriction may be eased in a future release. The << HERE shows in
-the regular expression about where the problem was discovered.
+handle. This restriction may be eased in a future release. The <-- HERE
+shows in the regular expression about where the problem was discovered.
=item Malformed PERLLIB_PREFIX
@@ -1843,11 +1846,12 @@ Perl detected something that didn't comply with UTF-8 encoding rules.
Perl thought it was reading UTF-16 encoded character data but while
doing it Perl met a malformed Unicode surrogate.
-=item %s matches null string many times
+=item %s matches null string many times in regex; marked by <-- HERE in m/%s/
(W regexp) The pattern you've specified would be an infinite loop if the
-regular expression engine didn't specifically check for that. See
-L<perlre>.
+regular expression engine didn't specifically check for that. The <-- HERE
+shows in the regular expression about where the problem was discovered.
+See L<perlre>.
=item % may only be used in unpack
@@ -2008,16 +2012,15 @@ provided for this purpose.
(F) You tried to do a read/write/send/recv operation with a buffer
length that is less than 0. This is difficult to imagine.
-=item Nested quantifiers before << HERE in regex m/%s/
+=item Nested quantifiers in regex; marked by <-- HERE in m/%s/
(F) You can't quantify a quantifier without intervening parentheses. So
-things like ** or +* or ?* are illegal. The << HERE shows in the regular
+things like ** or +* or ?* are illegal. The <-- HERE shows in the regular
expression about where the problem was discovered.
-Note, however, that the minimal matching quantifiers, C<*?>, C<+?>, and
+Note that the minimal matching quantifiers, C<*?>, C<+?>, and
C<??> appear to be nested quantifiers, but aren't. See L<perlre>.
-
=item %s never introduced
(S internal) The symbol in question was declared but somehow went out of
@@ -2658,34 +2661,38 @@ value of the environment variable PERLIO.
process which isn't a subprocess of the current process. While this is
fine from VMS' perspective, it's probably not what you intended.
-=item POSIX syntax [%s] belongs inside character classes
+=item POSIX syntax [%s] belongs inside character classes in regex; marked by <-- HERE in m/%s/
(W unsafe) The character class constructs [: :], [= =], and [. .] go
-I<inside> character classes, the [] are part of the construct, for
-example: /[012[:alpha:]345]/. Note that [= =] and [. .] are not
-currently implemented; they are simply placeholders for future
-extensions and will cause fatal errors.
+I<inside> character classes, the [] are part of the construct, for example:
+/[012[:alpha:]345]/. Note that [= =] and [. .] are not currently
+implemented; they are simply placeholders for future extensions and will
+cause fatal errors. The <-- HERE shows in the regular expression about
+where the problem was discovered. See L<perlre>.
-=item POSIX syntax [. .] is reserved for future extensions
+=item POSIX syntax [. .] is reserved for future extensions in regex; marked by <-- HERE in m/%s/
(F regexp) Within regular expression character classes ([]) the syntax
-beginning with "[." and ending with ".]" is reserved for future
-extensions. If you need to represent those character sequences inside
-a regular expression character class, just quote the square brackets
-with the backslash: "\[." and ".\]".
+beginning with "[." and ending with ".]" is reserved for future extensions.
+If you need to represent those character sequences inside a regular
+expression character class, just quote the square brackets with the
+backslash: "\[." and ".\]". The <-- HERE shows in the regular expression
+about where the problem was discovered. See L<perlre>.
-=item POSIX syntax [= =] is reserved for future extensions
+=item POSIX syntax [= =] is reserved for future extensions in regex; marked by <-- HERE in m/%s/
-(F) Within regular expression character classes ([]) the syntax
-beginning with "[=" and ending with "=]" is reserved for future
-extensions. If you need to represent those character sequences inside
-a regular expression character class, just quote the square brackets
-with the backslash: "\[=" and "=\]".
+(F) Within regular expression character classes ([]) the syntax beginning
+with "[=" and ending with "=]" is reserved for future extensions. If you
+need to represent those character sequences inside a regular expression
+character class, just quote the square brackets with the backslash: "\[="
+and "=\]". The <-- HERE shows in the regular expression about where the
+problem was discovered. See L<perlre>.
-=item POSIX class [:%s:] unknown
+=item POSIX class [:%s:] unknown in regex; marked by <-- HERE in m/%s/
-(F) The class in the character class [: :] syntax is unknown. See
-L<perlre>.
+(F) The class in the character class [: :] syntax is unknown. The <-- HERE
+shows in the regular expression about where the problem was discovered.
+See L<perlre>.
=item POSIX getpgrp can't take an argument
@@ -2809,13 +2816,13 @@ in L<perlos2>.
(S unsafe) The subroutine being declared or defined had previously been
declared or defined with a different function prototype.
-=item Quantifier in {,} bigger than %d before << HERE in regex m/%s/
+=item Quantifier in {,} bigger than %d in regex; marked by <-- HERE in m/%s/
(F) There is currently a limit to the size of the min and max values of the
-{min,max} construct. The << HERE shows in the regular expression about where
+{min,max} construct. The <-- HERE shows in the regular expression about where
the problem was discovered. See L<perlre>.
-=item Quantifier unexpected on zero-length expression before << HERE %s
+=item Quantifier unexpected on zero-length expression; marked by <-- HERE in m/%s/
(W regexp) You applied a regular expression quantifier in a place where
it makes no sense, such as on a zero-width assertion. Try putting the
@@ -2823,6 +2830,9 @@ quantifier inside the assertion instead. For example, the way to match
"abc" provided that it is followed by three repetitions of "xyz" is
C</abc(?=(?:xyz){3})/>, not C</abc(?=xyz){3}/>.
+The <-- HERE shows in the regular expression about where the problem was
+discovered.
+
=item Range iterator outside integer range
(F) One (or both) of the numeric arguments to the range operator ".."
@@ -2883,14 +2893,14 @@ Doing so has no effect.
(W internal) The internal sv_replace() function was handed a new SV with
a reference count of other than 1.
-=item Reference to nonexistent group before << HERE in regex m/%s/
+=item Reference to nonexistent group in regex; marked by <-- HERE in m/%s/
(F) You used something like C<\7> in your regular expression, but there are
not at least seven sets of capturing parentheses in the expression. If you
wanted to have the character with value 7 inserted into the regular expression,
prepend a zero to make the number at least two digits: C<\07>
-The << HERE shows in the regular expression about where the problem was
+The <-- HERE shows in the regular expression about where the problem was
discovered.
=item regexp memory corruption
@@ -3007,34 +3017,37 @@ scalar that had previously been marked as free.
(W closed) The socket you're sending to got itself closed sometime
before now. Check your control flow.
-=item Sequence (? incomplete before << HERE mark in regex m/%s/
+=item Sequence (? incomplete in regex; marked by <-- HERE in m/%s/
-(F) A regular expression ended with an incomplete extension (?. The <<<HERE
+(F) A regular expression ended with an incomplete extension (?. The <-- HERE
shows in the regular expression about where the problem was discovered. See
L<perlre>.
-=item Sequence (?{...}) not terminated or not {}-balanced in %s
+=item Sequence (?{...}) not terminated or not {}-balanced in regex; marked by <-- HERE in m/%s/
(F) If the contents of a (?{...}) clause contains braces, they must balance
-for Perl to properly detect the end of the clause. See L<perlre>.
+for Perl to properly detect the end of the clause. The <-- HERE shows in
+the regular expression about where the problem was discovered. See
+L<perlre>.
-=item Sequence (?%s...) not implemented before << HERE mark in %s
+=item Sequence (?%s...) not implemented in regex; marked by <-- HERE in m/%s/
(F) A proposed regular expression extension has the character reserved but
-has not yet been written. The << HERE shows in the regular expression about
+has not yet been written. The <-- HERE shows in the regular expression about
where the problem was discovered. See L<perlre>.
-=item Sequence (?%s...) not recognized before << HERE mark in %s
+=item Sequence (?%s...) not recognized in regex; marked by <-- HERE in m/%s/
-(F) You used a regular expression extension that doesn't make sense.
-The << HERE shows in the regular expression about
-where the problem was discovered.
-See L<perlre>.
+(F) You used a regular expression extension that doesn't make sense. The
+<-- HERE shows in the regular expression about where the problem was
+discovered. See L<perlre>.
-=item Sequence (?#... not terminated in regex m/%s/
+=item Sequence (?#... not terminated in regex; marked by <-- HERE in m/%s/
(F) A regular expression comment must be terminated by a closing
-parenthesis. Embedded parentheses aren't allowed. See L<perlre>.
+parenthesis. Embedded parentheses aren't allowed. The <-- HERE shows in
+the regular expression about where the problem was discovered. See
+L<perlre>.
=item 500 Server error
@@ -3215,7 +3228,7 @@ assignment or as a subroutine argument for example).
(F) Your Perl was compiled with B<-D>SETUID_SCRIPTS_ARE_SECURE_NOW, but
a version of the setuid emulator somehow got run anyway.
-=item Switch (?(condition)... contains too many branches before << HE%s
+=item Switch (?(condition)... contains too many branches in regex; marked by <-- HERE in m/%s/
(F) A (?(condition)if-clause|else-clause) construct can have at most two
branches (the if-clause and the else-clause). If you want one or both to
@@ -3224,13 +3237,13 @@ clustering parentheses:
(?(condition)(?:this|that|other)|else-clause)
-The << HERE shows in the regular expression about where the problem was
+The <-- HERE shows in the regular expression about where the problem was
discovered. See L<perlre>.
-=item Switch condition not recognized before << HERE in regex m/%s/
+=item Switch condition not recognized in regex; marked by <-- HERE in m/%s/
(F) If the argument to the (?(...)if-clause|else-clause) construct is a
-number, it can be only a number. The << HERE shows in the regular expression
+number, it can be only a number. The <-- HERE shows in the regular expression
about where the problem was discovered. See L<perlre>.
=item switching effective %s is not implemented
@@ -3394,7 +3407,7 @@ Check the #! line, or manually feed your script into Perl yourself.
=item Too many ('s
-=item trailing \ in regexp
+=item Trailing \ in regex m/%s/
(F) The regular expression ends with an unbackslashed backslash.
Backslash it. See L<perlre>.
@@ -3508,15 +3521,16 @@ representative, who probably put it there in the first place.
(F) There are no byte-swapping functions for a machine with this byte
order.
-=item Unknown switch condition (?(%.2s before << HERE in regex m/%s/
+=item Unknown switch condition (?(%.2s in regex; marked by <-- HERE in m/%s/
-(F) The condition of a (?(condition)if-clause|else-clause) construct is not
-known. The condition may be lookaround (the condition is true if the
-lookaround is true), a (?{...}) construct (the condition is true if the
-code evaluates to a true value), or a number (the condition is true if the
-set of capturing parentheses named by the number is defined).
+(F) The condition part of a (?(condition)if-clause|else-clause) construct
+is not known. The condition may be lookahead or lookbehind (the condition
+is true if the lookahead or lookbehind is true), a (?{...}) construct (the
+condition is true if the code evaluates to a true value), or a number (the
+condition is true if the set of capturing parentheses named by the number
+matched).
-The << HERE shows in the regular expression about where the problem was
+The <-- HERE shows in the regular expression about where the problem was
discovered. See L<perlre>.
=item Unknown open() mode '%s'
@@ -3532,18 +3546,19 @@ iterating over it, and someone else stuck a message in the stream of
data Perl expected. Someone's very confused, or perhaps trying to
subvert Perl's population of %ENV for nefarious purposes.
-=item unmatched [ before << HERE mark in regex m/%s/
+=item unmatched [ in regex; marked by <-- HERE in m/%s/
(F) The brackets around a character class must match. If you wish to
include a closing bracket in a character class, backslash it or put it
-first. See L<perlre>. The << HERE shows in the regular expression about
-where the escape was discovered.
+first. The <-- HERE shows in the regular expression about where the problem
+was discovered. See L<perlre>.
-=item unmatched ( in regexp before << HERE mark in regex m/%s/
+=item unmatched ( in regex; marked by <-- HERE in m/%s/
(F) Unbackslashed parentheses must always be balanced in regular
-expressions. If you're a vi user, the % key is valuable for finding the
-matching parenthesis. See L<perlre>.
+expressions. If you're a vi user, the % key is valuable for finding the
+matching parenthesis. The <-- HERE shows in the regular expression about
+where the problem was discovered. See L<perlre>.
=item Unmatched right %s bracket
@@ -3571,14 +3586,13 @@ script, a binary program, or a directory as a Perl program.
recognized by Perl inside character classes. The character was
understood literally.
-=item Unrecognized escape \\%c passed through before << HERE in m/%s/
+=item Unrecognized escape \\%c passed through in regex; marked by <-- HERE in m/%s/
(W regexp) You used a backslash-character combination which is not
recognized by Perl. This combination appears in an interpolated variable or
a C<'>-delimited regular expression. The character was understood
-literally. The << HERE shows in the regular expression about where the escape
-was discovered.
-
+literally. The <-- HERE shows in the regular expression about where the
+escape was discovered.
=item Unrecognized escape \\%c passed through
@@ -3905,11 +3919,11 @@ anonymous, using the C<sub {}> syntax. When inner anonymous subs that
reference variables in outer subroutines are called or referenced, they
are automatically rebound to the current values of such variables.
-=item Variable length lookbehind not implemented before << HERE in %s
+=item Variable length lookbehind not implemented in regex; marked by <-- HERE in m/%s/
(F) Lookbehind is allowed only for subexpressions whose length is fixed and
-known at compile time. The << HERE shows in the regular expression about where
-the problem was discovered.
+known at compile time. The <-- HERE shows in the regular expression about
+where the problem was discovered. See L<perlre>.
=item Version number must be a constant number
diff --git a/pod/perlref.pod b/pod/perlref.pod
index 2727e95ae9..a62276b782 100644
--- a/pod/perlref.pod
+++ b/pod/perlref.pod
@@ -538,6 +538,13 @@ string is effectively quoted.
B<WARNING>: This section describes an experimental feature. Details may
change without notice in future versions.
+B<NOTE>: The current user-visible implementation of pseudo-hashes
+(the weird use of the first array element) is deprecated starting from
+Perl 5.8.0 and will be removed in Perl 5.10.0, and the feature will be
+implemented differently. Not only is the current interface rather ugly,
+but the current implementation slows down normal array and hash use quite
+noticeably. The 'fields' pragma interface will remain available.
+
Beginning with release 5.005 of Perl, you may use an array reference
in some contexts that would normally require a hash reference. This
allows you to access array elements using symbolic names, as if they
diff --git a/pod/perltoc.pod b/pod/perltoc.pod
index ccc4480079..a75f39ea1f 100644
--- a/pod/perltoc.pod
+++ b/pod/perltoc.pod
@@ -362,20 +362,21 @@ mkdir FILENAME,MASK, mkdir FILENAME, msgctl ID,CMD,ARG, msgget KEY,FLAGS,
msgrcv ID,VAR,SIZE,TYPE,FLAGS, msgsnd ID,MSG,FLAGS, my EXPR, my EXPR :
ATTRIBUTES, next LABEL, next, no Module LIST, oct EXPR, oct, open
FILEHANDLE,MODE,LIST, open FILEHANDLE,EXPR, open FILEHANDLE, opendir
-DIRHANDLE,EXPR, ord EXPR, ord, our EXPR, pack TEMPLATE,LIST, package
-NAMESPACE, package, pipe READHANDLE,WRITEHANDLE, pop ARRAY, pop, pos
-SCALAR, pos, print FILEHANDLE LIST, print LIST, print, printf FILEHANDLE
-FORMAT, LIST, printf FORMAT, LIST, prototype FUNCTION, push ARRAY,LIST,
-q/STRING/, qq/STRING/, qr/STRING/, qx/STRING/, qw/STRING/, quotemeta EXPR,
-quotemeta, rand EXPR, rand, read FILEHANDLE,SCALAR,LENGTH,OFFSET, read
-FILEHANDLE,SCALAR,LENGTH, readdir DIRHANDLE, readline EXPR, readlink EXPR,
-readlink, readpipe EXPR, recv SOCKET,SCALAR,LENGTH,FLAGS, redo LABEL, redo,
-ref EXPR, ref, rename OLDNAME,NEWNAME, require VERSION, require EXPR,
-require, reset EXPR, reset, return EXPR, return, reverse LIST, rewinddir
-DIRHANDLE, rindex STR,SUBSTR,POSITION, rindex STR,SUBSTR, rmdir FILENAME,
-rmdir, s///, scalar EXPR, seek FILEHANDLE,POSITION,WHENCE, seekdir
-DIRHANDLE,POS, select FILEHANDLE, select, select RBITS,WBITS,EBITS,TIMEOUT,
-semctl ID,SEMNUM,CMD,ARG, semget KEY,NSEMS,FLAGS, semop KEY,OPSTRING, send
+DIRHANDLE,EXPR, ord EXPR, ord, our EXPR, our EXPR : ATTRIBUTES, pack
+TEMPLATE,LIST, package NAMESPACE, package, pipe READHANDLE,WRITEHANDLE, pop
+ARRAY, pop, pos SCALAR, pos, print FILEHANDLE LIST, print LIST, print,
+printf FILEHANDLE FORMAT, LIST, printf FORMAT, LIST, prototype FUNCTION,
+push ARRAY,LIST, q/STRING/, qq/STRING/, qr/STRING/, qx/STRING/, qw/STRING/,
+quotemeta EXPR, quotemeta, rand EXPR, rand, read
+FILEHANDLE,SCALAR,LENGTH,OFFSET, read FILEHANDLE,SCALAR,LENGTH, readdir
+DIRHANDLE, readline EXPR, readlink EXPR, readlink, readpipe EXPR, recv
+SOCKET,SCALAR,LENGTH,FLAGS, redo LABEL, redo, ref EXPR, ref, rename
+OLDNAME,NEWNAME, require VERSION, require EXPR, require, reset EXPR, reset,
+return EXPR, return, reverse LIST, rewinddir DIRHANDLE, rindex
+STR,SUBSTR,POSITION, rindex STR,SUBSTR, rmdir FILENAME, rmdir, s///, scalar
+EXPR, seek FILEHANDLE,POSITION,WHENCE, seekdir DIRHANDLE,POS, select
+FILEHANDLE, select, select RBITS,WBITS,EBITS,TIMEOUT, semctl
+ID,SEMNUM,CMD,ARG, semget KEY,NSEMS,FLAGS, semop KEY,OPSTRING, send
SOCKET,MSG,FLAGS,TO, send SOCKET,MSG,FLAGS, setpgrp PID,PGRP, setpriority
WHICH,WHO,PRIORITY, setsockopt SOCKET,LEVEL,OPTNAME,OPTVAL, shift ARRAY,
shift, shmctl ID,CMD,ARG, shmget KEY,SIZE,FLAGS, shmread ID,VAR,POS,SIZE,
@@ -2459,8 +2460,8 @@ References, Tutorials, Task-Oriented, Special Topics
=item Is there an IDE or Windows Perl Editor?
-CodeMagicCD, Komodo, The Object System, PerlBuilder, Perl code magic,
-visiPerl+, GNU Emacs, MicroEMACS, XEmacs, Elvis, Vile, Vim, Codewright,
+Komodo, The Object System, Open Perl IDE, PerlBuilder, visiPerl+,
+CodeMagicCD, GNU Emacs, MicroEMACS, XEmacs, Elvis, Vile, Vim, Codewright,
MultiEdit, SlickEdit, Bash, Ksh, Tcsh, Zsh, BBEdit and BBEdit Lite, Alpha
=item Where can I get Perl macros for vi?
@@ -4053,301 +4054,336 @@ PerlIO_apply_layers(f,mode,layers), PerlIO_binmode(f,ptype,imode,layers),
=item DESCRIPTION
-=item Infrastructure
+=item To do during 5.6.x
=over 4
-=item Mailing list archives
+=item Support for I/O disciplines
-=item Bug tracking system
+=item Eliminate need for "use utf8";
-=item Regression Tests
+=item Autoload byte.pm
-Coverage, Regression, __DIE__, suidperl, The 25% slowdown from perl4 to
-perl5
+=item Make "\u{XXXX}" et al work
-=back
+=item Overloadable regex assertions
-=item Configure
+=item Unicode collation and normalization
-=over 4
+=item Unicode case mappings
-=item Install HTML
+=item Unicode regular expression character classes
-=back
+=item use Thread for iThreads
-=item Perl Language
+=item Work out exit/die semantics for threads
-=over 4
+=item Typed lexicals for compiler
-=item 64-bit Perl
+=item Compiler workarounds for Win32
-=item Prototypes
+=item AUTOLOADing in the compiler
-Named prototypes, Indirect objects, Method calls, Context, Scoped subs
+=item Fixing comppadlist when compiling
-=back
+=item Cleaning up exported namespace
-=item Perl Internals
+=item Complete signal handling
-=over 4
+=item Out-of-source builds
-=item magic_setisa
+=item POSIX realtime support
-=item Garbage Collection
+=item UNIX98 support
-=item Reliable signals
+=item IPv6 Support
-Alternate runops() for signal despatch, Figure out how to die() in delayed
-sighandler, Add tests for Thread::Signal, Automatic tests against CPAN
+=item Long double conversion
-=item Interpolated regex performance bugs
+=item Locales
-=item Memory leaks from failed eval/regcomp
+=item Thread-safe regexes
-=item Make XS easier to use
+=item Arithmetic on non-Arabic numerals
+
+=item POSIX Unicode character classes
+
+=item Factoring out common suffices/prefices in regexps (trie optimization)
+
+=item Security audit shipped utilities
+
+=item Custom opcodes
+
+=item spawnvp() on Win32
+
+=item DLL Versioning
+
+=item Introduce @( and @)
+
+=item Floating point handling
+
+=item IV/UV preservation
+
+=item Replace pod2html with something using Pod::Parser
+
+=item Automate module testing on CPAN
+
+=item sendmsg and recvmsg
+
+=item Rewrite perlre documentation
-=item Make embedded Perl easier to use
+=item Convert example code to IO::Handle filehandles
-=item Namespace cleanup
+=item Document Win32 choices
-=item MULTIPLICITY
+=item Check new modules
-=item MacPerl
+=item Make roffitall find pods and libs itself
=back
-=item Documentation
+=item To do at some point
=over 4
-=item A clear division into tutorial and reference
+=item Remove regular expression recursion
-=item Remove the artificial distinction between operators and functions
+=item Memory leaks after failed eval
-=item More tutorials
+=item pack "(stuff)*"
-Regular expressions, I/O, pack/unpack, Debugging
+=item bitfields in pack
-=item Include a search tool
+=item Cross compilation
-=item Include a locate tool
+=item Perl preprocessor / macros
-=item Separate function manpages by default
+=item Perl lexer in Perl
-=item Users can't find the manpages
+=item Using POSIX calls internally
-=item Install ALL Documentation
+=item -i rename file when changed
-=item Outstanding issues to be documented
+=item All ARGV input should act like E<lt>E<gt>
-=item Adapt www.linuxhq.com for Perl
+=item Support for rerunning debugger
-=item Replace man with a perl program
+=item my sub foo { }
-=item Unicode tutorial
+=item One-pass global destruction
-=back
+=item Rewrite regexp parser
-=item Modules
+=item Cache recently used regexps
-=over 4
+=item Re-entrant functions
-=item Update the POSIX extension to conform with the POSIX 1003.1 Edition 2
+=item Cross-compilation support
-=item Module versions
+=item Bit-shifting bitvectors
-=item New modules
+=item debugger pragma
-=item Profiler
+=item use less pragma
-=item Tie Modules
+=item switch structures
-VecArray, SubstrArray, VirtualArray, ShiftSplice
+=item Cache eval tree
-=item Procedural options
+=item rcatmaybe
-=item RPC
+=item Shrink opcode tables
-=item y2k localtime/gmtime
+=item Optimize away @_
-=item Export File::Find variables
+=item Prototypes versus indirect objects
-=item Ioctl
+=item Install HMTL
-=item Debugger attach/detach
+=item Prototype method calls
-=item Regular Expression debugger
+=item Return context prototype declarations
-=item Alternative RE Syntax
+=item magic_setisa
-=item Bundled modules
+=item Garbage collection
-=item Expect
+=item IO tutorial
-=item GUI::Native
+=item pack/unpack tutorial
-=item Update semibroken auxiliary tools; h2ph, a2p, etc.
+=item Rewrite perldoc
-=item pod2html
+=item Install .3p man pages
+
+=item Unicode tutorial
-=item Podchecker
+=item Update POSIX.pm for 1003.1-2
+=head2 Retargetable installation
+
+=item POSIX emulation on non-POSIX systems
+
+=item Rename Win32 headers
+
+=item Finish off lvalue functions
+
+=item Update sprintf documentation
+
+=item Use fchown/fchmod internally
=back
-=item Tom's Wishes
+=item Vague ideas
=over 4
-=item Webperl
+=item ref() in list context
-=item Mobile agents
+=item Make tr/// return histogram
-=item POSIX on non-POSIX
+=item Compile to real threaded code
+=head2 Structured types
+=head2 Modifiable $1 et al.
-=item Portable installations
+=item Procedural interfaces for IO::*, etc.
-=back
+=item RPC modules
-=item Win32 Stuff
+=item Attach/detach debugger from running program
-=over 4
+=item Alternative RE syntax module
-=item Rename new headers to be consistent with the rest
+=item GUI::Native
-=item Sort out the spawnvp() mess
+=item foreach(reverse ...)
-=item Work out DLL versioning
+=item Constant function cache
-=item Style-check
+=item Approximate regular expression matching
=back
-=item Would be nice to have
+=item Ongoing
-C<pack "(stuff)*">, Contiguous bitfields in pack/unpack, lexperl, Bundled
-perl preprocessor, Use posix calls internally where possible, format
-BOTTOM, -i rename file only when successfully changed, All ARGV input
-should act like <>, report HANDLE [formats], support in perlmain to rerun
-debugger, lvalue functions
+=over 4
-=item Possible pragmas
+=item Update guts documentation
-=over 4
+=item Add more tests
-=item 'less'
+=item Update auxiliary tools
=back
-=item Optimizations
+=item Recently done things
=over 4
-=item constant function cache
+=item Safe signal handling
-=item foreach(reverse...)
+=item Tie Modules
-=item Cache eval tree
+=item gettimeofday
-=item rcatmaybe
+=item setitimer and getimiter
-=item Shrink opcode tables
+=item Testing __DIE__ hook
-=item Cache hash value
+=item CPP equivalent in Perl
-=item Optimize away @_ where possible
+=item Explicit switch statements
-=item Optimize sort by { $a <=> $b }
+=item autocroak
-=item Rewrite regexp parser for better integrated optimization
+=item UTF/EBCDIC
-=back
+=item UTF Regexes
-=item Vague possibilities
+=item perlcc to produce executable
-ref function in list context, make tr/// return histogram in list context?,
-Loop control on do{} et al, Explicit switch statements, compile to real
-threaded code, structured types, Modifiable $1 et al
+=item END blocks saved in compiled output
-=item To Do Or Not To Do
+=item Secure temporary file module
-=over 4
+=item Integrate Time::HiRes
-=item Making my() work on "package" variables
+=item Turn Cwd into XS
-=item "or" testing defined not truth
+=item Mmap for input
-=item "dynamic" lexicals
+=item Byte to/from UTF8 and UTF8 to/from local conversion
-=item "class"-based, rather than package-based "lexicals"
+=item Add sockatmark support
-=back
+=item Mailing list archives
-=item Threading
+=item Bug tracking
-=over 4
+=item Integrate MacPerl
-=item Modules
+=item Web "nerve center" for Perl
-=item Testing
+=item Regular expression tutorial
-=item $AUTOLOAD
+=item Debugging Tutorial
-=item exit/die
+=item Integrate new modules
-=item External threads
+=item Integrate profiler
-=item Thread::Pool
+=item Y2K error detection
-=item thread-safety
+=item Regular expression debugger
-=item Per-thread GVs
+=item POD checker
-=back
+=item "Dynamic" lexicals
-=item Compiler
+=item Cache precompiled modules
-=over 4
+=back
-=item Optimization
+=item Deprecated Wishes
-=item Byteperl
+=over 4
-=item Precompiled modules
+=item Loop control on do{}
-=item Executables
+=item Lexically scoped typeglobs
-=item Typed lexicals
+=item format BOTTOM
+=head2 report HANDLE
-=item Win32
+=item Generalised want()/caller())
+=head2 Named prototypes
-=item END blocks
+=item Built-in globbing
-=item _AUTOLOAD
+=item Regression tests for suidperl
-=item comppadlist
+=item Cached hash values
-=item Cached compilation
+=item Add compression modules
-=back
+=item Reorganise documentation into tutorials/references
-=item Recently Finished Tasks
+=item Remove distinction between functions and operators
-=over 4
+=item Make XS easier to use
-=item Figure a way out of $^(capital letter)
+=item Make embedding easier to use
-=item Filenames
+=item man for perl
-=item Foreign lines
+=item my $Package::variable
-=item Namespace cleanup
+=item "or" tests defined, not truth
-=item ISA.pm
+=item "class"-based lexicals
-=item gettimeofday
+=item byteperl
-=item autocroak?
+=item Lazy evaluation / tail recursion removal
=back
@@ -4432,7 +4468,8 @@ DEFINES, USE_MULTI = define, #PERL_MALLOC = define, CFG = Debug
=item Pixie Profiling
--h, -l, -p, -h, -i, -l, -testcoverage, -zero
+-h, -l, -p[rodecures], -h[eavy], -i[nvocations], -l[ines], -testcoverage,
+-z[ero]
=item CONCLUSION
@@ -4488,6 +4525,104 @@ I<The Road goes ever on and on, down from the door where it began.>
=back
+=head2 perl572delta, perl571delta - what's new for perl v5.7.2
+
+=over 4
+
+=item DESCRIPTION
+
+=item Security Vulnerability Closed
+
+=item Incompatible Changes
+
+=item Core Enhancements
+
+=item Modules and Pragmata
+
+=over 4
+
+=item New Modules
+
+=item Updated And Improved Modules and Pragmata
+
+=back
+
+=item Performance Enhancements
+
+=item Utility Changes
+
+=item New Documentation
+
+=item Installation and Configuration Improvements
+
+=over 4
+
+=item New Or Improved Platforms
+
+=item Generic Improvements
+
+=back
+
+=item Selected Bug Fixes
+
+=over 4
+
+=item Platform Specific Changes and Fixes
+
+=back
+
+=item New or Changed Diagnostics
+
+=item Changed Internals
+
+=over 4
+
+=item Regex pre-/post-compilation items matched up
+
+=back
+
+=item New Tests
+
+=item Known Problems
+
+=over 4
+
+=item AIX vac 5.0.0.0 May Produce Buggy Code For Perl
+
+=item lib/ftmp-security tests warn 'system possibly insecure'
+
+=item lib/io_multihomed Fails In LP64-Configured HP-UX
+
+=item Test lib/posix Subtest 9 Fails In LP64-Configured HP-UX
+
+=item lib/b test 19
+
+=item Linux With Sfio Fails op/misc Test 48
+
+=item sigaction test 13 in VMS
+
+=item sprintf tests 129 and 130
+
+=item Failure of Thread tests
+
+=item Localising a Tied Variable Leaks Memory
+
+=item Self-tying of Arrays and Hashes Is Forbidden
+
+=item Building Extensions Can Fail Because Of Largefiles
+
+=item The Compiler Suite Is Still Experimental
+
+=back
+
+=item Reporting Bugs
+
+=item SEE ALSO
+
+=item HISTORY
+
+=back
+
=head2 perl571delta - what's new for perl v5.7.1
=over 4
@@ -4500,6 +4635,16 @@ I<The Road goes ever on and on, down from the door where it began.>
=item Core Enhancements
+=item AUTOLOAD Is Now Lvaluable
+
+=over 4
+
+=item PerlIO is Now The Default
+
+=item Signals Are Now Safe
+
+=back
+
=item Modules and Pragmata
=over 4
@@ -5680,6 +5825,38 @@ Source, Compiled Module Source, Perl Modules/Scripts
=back
+=head2 perldgux - Perl under DG/UX.
+
+=over 4
+
+=item SYNOPSIS
+
+=back
+
+=over 4
+
+=item DESCRIPTION
+
+=item BUILD
+
+=over 4
+
+=item Non-threaded Case
+
+=item Threaded Case
+
+=item Testing
+
+=item Installing the built perl
+
+=back
+
+=item AUTHOR
+
+=item SEE ALSO
+
+=back
+
=head2 perlepoc, README.epoc - Perl for EPOC
=over 4
@@ -8934,8 +9111,6 @@ reference, e.g.:
=item Encoding and IO
-=item Encode and PerlIO
-
=item Encoding How to ...
IO with mixed content (faking iso-2020-*), MIME's Content-Length:, UTF-8
@@ -13896,15 +14071,16 @@ TIESCALAR classname, LIST, FETCH this, STORE this, value, DESTROY this
=item DESCRIPTION
gettimeofday (), usleep ( $useconds ), ualarm ( $useconds [,
-$interval_useconds ] ), tv_interval ( $ref_to_gettimeofday [,
-$ref_to_later_gettimeofday] ), time (), sleep ( $floating_seconds ), alarm
-( $floating_seconds [, $interval_floating_seconds ] ), setitimer ( $which,
-$floating_seconds [, $interval_floating_seconds ] ), getitimer ( $which )
+$interval_useconds ] ), tv_interval, time (), sleep ( $floating_seconds ),
+alarm ( $floating_seconds [, $interval_floating_seconds ] ), setitimer,
+getitimer ( $which )
=item EXAMPLES
=item C API
+=item CAVEATS
+
=item AUTHORS
=item REVISION
diff --git a/pod/perltodo.pod b/pod/perltodo.pod
index 39aa37f35c..8c94a29c9a 100644
--- a/pod/perltodo.pod
+++ b/pod/perltodo.pod
@@ -747,7 +747,7 @@ Suggesting this on P5P B<will> cause a boring and interminable flamewar.
=head2 "class"-based lexicals
-Use flyweight objects, secure hashes or, dare I say it, pseudohashes instead.
+Use flyweight objects, secure hashes or, dare I say it, pseudo-hashes instead.
=head2 byteperl
diff --git a/pp_hot.c b/pp_hot.c
index bc7a1b9941..9e484fca88 100644
--- a/pp_hot.c
+++ b/pp_hot.c
@@ -156,6 +156,19 @@ PP(pp_concat)
if (TARG != left)
sv_setsv(TARG, left);
+#if defined(PERL_Y2KWARN)
+ if ((SvIOK(right) || SvNOK(right)) && ckWARN(WARN_Y2K) && SvOK(TARG)) {
+ STRLEN n;
+ char *s = SvPV(TARG,n);
+ if (n >= 2 && s[n-2] == '1' && s[n-1] == '9'
+ && (n == 2 || !isDIGIT(s[n-3])))
+ {
+ Perl_warner(aTHX_ WARN_Y2K, "Possible Y2K bug: %s",
+ "about to append an integer to '19'");
+ }
+ }
+#endif
+
if (TARG == right) {
if (left == right) {
/* $right = $right . $right; */
@@ -175,19 +188,6 @@ PP(pp_concat)
sv_catsv(TARG, right);
}
-#if defined(PERL_Y2KWARN)
- if ((SvIOK(right) || SvNOK(right)) && ckWARN(WARN_Y2K)) {
- STRLEN n;
- char *s = SvPV(TARG,n);
- if (n >= 2 && s[n-2] == '1' && s[n-1] == '9'
- && (n == 2 || !isDIGIT(s[n-3])))
- {
- Perl_warner(aTHX_ WARN_Y2K, "Possible Y2K bug: %s",
- "about to append an integer to '19'");
- }
- }
-#endif
-
SETTARG;
RETURN;
}
@@ -1812,9 +1812,17 @@ PP(pp_iter)
SvREFCNT_dec(*itersvp);
- if ((sv = SvMAGICAL(av)
- ? *av_fetch(av, ++cx->blk_loop.iterix, FALSE)
- : AvARRAY(av)[++cx->blk_loop.iterix]))
+ if (SvMAGICAL(av) || AvREIFY(av)) {
+ SV **svp = av_fetch(av, ++cx->blk_loop.iterix, FALSE);
+ if (svp)
+ sv = *svp;
+ else
+ sv = Nullsv;
+ }
+ else {
+ sv = AvARRAY(av)[++cx->blk_loop.iterix];
+ }
+ if (sv)
SvTEMP_off(sv);
else
sv = &PL_sv_undef;
diff --git a/regcomp.c b/regcomp.c
index a1defc6af9..1fdc44aee5 100644
--- a/regcomp.c
+++ b/regcomp.c
@@ -250,10 +250,10 @@ static scan_data_t zero_scan_data = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
* of t/op/regmesg.t, the tests in t/op/re_tests, and those in
* op/pragma/warn/regcomp.
*/
-#define MARKER1 "HERE" /* marker as it appears in the description */
-#define MARKER2 " << HERE " /* marker as it appears within the regex */
+#define MARKER1 "<-- HERE" /* marker as it appears in the description */
+#define MARKER2 " <-- HERE " /* marker as it appears within the regex */
-#define REPORT_LOCATION " before " MARKER1 " mark in regex m/%.*s" MARKER2 "%s/"
+#define REPORT_LOCATION " in regex; marked by " MARKER1 " in m/%.*s" MARKER2 "%s/"
/*
* Calls SAVEDESTRUCTOR_X if needed, then calls Perl_croak with the given
diff --git a/regexec.c b/regexec.c
index d3e347e1df..d60e7c75c8 100644
--- a/regexec.c
+++ b/regexec.c
@@ -116,6 +116,15 @@
#define HOPc(pos,off) ((char*)HOP(pos,off))
#define HOPMAYBEc(pos,off) ((char*)HOPMAYBE(pos,off))
+#define HOPBACK(pos, off) ( \
+ (UTF && DO_UTF8(PL_reg_sv)) \
+ ? reghopmaybe((U8*)pos, -off) \
+ : (pos - off >= PL_bostr) \
+ ? (U8*)(pos - off) \
+ : (U8*)NULL \
+)
+#define HOPBACKc(pos, off) (char*)HOPBACK(pos, off)
+
#define reghop3_c(pos,off,lim) ((char*)reghop3((U8*)pos, off, (U8*)lim))
#define reghopmaybe3_c(pos,off,lim) ((char*)reghopmaybe3((U8*)pos, off, (U8*)lim))
#define HOP3(pos,off,lim) (DO_UTF8(PL_reg_sv) ? reghop3((U8*)pos, off, (U8*)lim) : (U8*)(pos + off))
@@ -3368,20 +3377,10 @@ S_regmatch(pTHX_ regnode *prog)
case UNLESSM:
n = 0;
if (scan->flags) {
- if (UTF) { /* XXXX This is absolutely
- broken, we read before
- start of string. */
- s = HOPMAYBEc(locinput, -scan->flags);
- if (!s)
- goto say_yes;
- PL_reginput = s;
- }
- else {
- if (locinput < PL_bostr + scan->flags)
- goto say_yes;
- PL_reginput = locinput - scan->flags;
- goto do_ifmatch;
- }
+ s = HOPBACKc(locinput, scan->flags);
+ if (!s)
+ goto say_yes;
+ PL_reginput = s;
}
else
PL_reginput = locinput;
@@ -3389,20 +3388,10 @@ S_regmatch(pTHX_ regnode *prog)
case IFMATCH:
n = 1;
if (scan->flags) {
- if (UTF) { /* XXXX This is absolutely
- broken, we read before
- start of string. */
- s = HOPMAYBEc(locinput, -scan->flags);
- if (!s || s < PL_bostr)
- goto say_no;
- PL_reginput = s;
- }
- else {
- if (locinput < PL_bostr + scan->flags)
- goto say_no;
- PL_reginput = locinput - scan->flags;
- goto do_ifmatch;
- }
+ s = HOPBACKc(locinput, scan->flags);
+ if (!s)
+ goto say_no;
+ PL_reginput = s;
}
else
PL_reginput = locinput;
diff --git a/t/lib/1_compile.t b/t/lib/1_compile.t
index 75801bb945..f1196f42f9 100644
--- a/t/lib/1_compile.t
+++ b/t/lib/1_compile.t
@@ -158,6 +158,7 @@ FindBin
GDBM_File
Getopt::Long
Getopt::Std
+I18N:Collate
IO::Dir
IO::File
IO::Handle
diff --git a/t/lib/glob-basic.t b/t/lib/glob-basic.t
index 6c12c2624c..fe7f9ef32f 100755
--- a/t/lib/glob-basic.t
+++ b/t/lib/glob-basic.t
@@ -118,9 +118,10 @@ unless (@a == 3
and $a[1] eq 'a'
and $a[2] eq 'b')
{
- print "not ";
+ print "not ok 8 # @a";
+} else {
+ print "ok 8\n";
}
-print "ok 8\n";
# "~" should expand to $ENV{HOME}
$ENV{HOME} = "sweet home";
diff --git a/t/lib/i18n-collate.t b/t/lib/i18n-collate.t
new file mode 100644
index 0000000000..bf3ba20b6a
--- /dev/null
+++ b/t/lib/i18n-collate.t
@@ -0,0 +1,44 @@
+#!./perl
+
+BEGIN {
+ chdir 't' if -d 't';
+ @INC = '../lib';
+ require Config; import Config;
+ if (!$Config{d_setlocale} || $Config{ccflags} =~ /\bD?NO_LOCALE\b/) {
+ print "1..0\n";
+ exit;
+ }
+}
+
+print "1..7\n";
+
+use I18N::Collate;
+
+print "ok 1\n";
+
+$a = I18N::Collate->new("foo");
+
+print "ok 2\n";
+
+{
+ use warnings;
+ local $SIG{__WARN__} = sub { $@ = $_[0] };
+ $b = I18N::Collate->new("foo");
+ print "not " unless $@ =~ /\bHAS BEEN DEPRECATED\b/;
+ print "ok 3\n";
+ $@ = '';
+}
+
+print "not " unless $a eq $b;
+print "ok 4\n";
+
+$b = I18N::Collate->new("bar");
+print "not " if $@ =~ /\bHAS BEEN DEPRECATED\b/;
+print "ok 5\n";
+
+print "not " if $a eq $b;
+print "ok 6\n";
+
+print "not " if $a lt $b == $a gt $b;
+print "ok 7\n";
+
diff --git a/t/lib/time-hires.t b/t/lib/time-hires.t
index cc741e7669..db35b955a5 100644
--- a/t/lib/time-hires.t
+++ b/t/lib/time-hires.t
@@ -132,7 +132,7 @@ else {
{
my $t = time();
my $tf = Time::HiRes::time();
- ok 14, ($tf >= $t) && (($tf - $t) <= 1),
+ ok 14, (abs($tf - $t) <= 1),
"time $t differs from Time::HiRes::time $tf";
}
diff --git a/t/op/misc.t b/t/op/misc.t
index 730e661912..885fad4ee5 100755
--- a/t/op/misc.t
+++ b/t/op/misc.t
@@ -358,7 +358,7 @@ print "you die joe!\n" unless "@x" eq 'x y z';
/(?{"{"})/ # Check it outside of eval too
EXPECT
Sequence (?{...}) not terminated or not {}-balanced at - line 1, within pattern
-Sequence (?{...}) not terminated or not {}-balanced before HERE mark in regex m/(?{ << HERE "{"})/ at - line 1.
+Sequence (?{...}) not terminated or not {}-balanced in regex; marked by <-- HERE in m/(?{ <-- HERE "{"})/ at - line 1.
########
/(?{"{"}})/ # Check it outside of eval too
EXPECT
@@ -660,3 +660,15 @@ new_pmop "abcdef"; reset;
# coredump in 5.7.1
close STDERR; die;
EXPECT
+########
+# Bug 20010515.004
+my @h = 1 .. 10;
+bad(@h);
+sub bad {
+ undef @h;
+ print "O";
+ print for @_;
+ print "K";
+}
+EXPECT
+OK
diff --git a/t/op/re_tests b/t/op/re_tests
index 806760f8ce..c83d742c19 100644
--- a/t/op/re_tests
+++ b/t/op/re_tests
@@ -45,9 +45,9 @@ a[b-d]e ace y $& ace
a[b-d] aac y $& ac
a[-b] a- y $& a-
a[b-] a- y $& a-
-a[b-a] - c - Invalid [] range "b-a" before HERE mark in regex m/a[b-a << HERE ]/
-a[]b - c - Unmatched [ before HERE mark in regex m/a[ << HERE ]b/
-a[ - c - Unmatched [ before HERE mark in regex m/a[ << HERE /
+a[b-a] - c - Invalid [] range "b-a"
+a[]b - c - Unmatched [
+a[ - c - Unmatched [
a] a] y $& a]
a[]]b a]b y $& a]b
a[^bc]d aed y $& aed
@@ -95,21 +95,21 @@ a[\S]b a-b y - -
ab|cd abc y $& ab
ab|cd abcd y $& ab
()ef def y $&-$1 ef-
-*a - c - Quantifier follows nothing before HERE mark in regex m/* << HERE a/
-(*)b - c - Quantifier follows nothing before HERE mark in regex m/(* << HERE )b/
+*a - c - Quantifier follows nothing
+(*)b - c - Quantifier follows nothing
$b b n - -
a\ - c - Search pattern not terminated
a\(b a(b y $&-$1 a(b-
a\(*b ab y $& ab
a\(*b a((b y $& a((b
a\\b a\b y $& a\b
-abc) - c - Unmatched ) before HERE mark in regex m/abc) << HERE /
-(abc - c - Unmatched ( before HERE mark in regex m/( << HERE abc/
+abc) - c - Unmatched )
+(abc - c - Unmatched (
((a)) abc y $&-$1-$2 a-a-a
(a)b(c) abc y $&-$1-$2 abc-a-c
a+b+c aabbabc y $& abc
a{1,}b{1,}c aabbabc y $& abc
-a** - c - Nested quantifiers before HERE mark in regex m/a** << HERE /
+a** - c - Nested quantifiers
a.+?c abcabc y $& abc
(a+|b)* ab y $&-$1 ab-b
(a+|b){0,} ab y $&-$1 ab-b
@@ -117,7 +117,7 @@ a.+?c abcabc y $& abc
(a+|b){1,} ab y $&-$1 ab-b
(a+|b)? ab y $&-$1 a-a
(a+|b){0,1} ab y $&-$1 a-a
-)( - c - Unmatched ) before HERE mark in regex m/) << HERE (/
+)( - c - Unmatched )
[^ab]* cde y $& cde
abc n - -
a* y $&
@@ -218,9 +218,9 @@ a[-]?c ac y $& ac
'a[b-d]'i AAC y $& AC
'a[-b]'i A- y $& A-
'a[b-]'i A- y $& A-
-'a[b-a]'i - c - Invalid [] range "b-a" before HERE mark in regex m/a[b-a << HERE ]/
-'a[]b'i - c - Unmatched [ before HERE mark in regex m/a[ << HERE ]b/
-'a['i - c - Unmatched [ before HERE mark in regex m/a[ << HERE /
+'a[b-a]'i - c - Invalid [] range "b-a"
+'a[]b'i - c - Unmatched [
+'a['i - c - Unmatched [
'a]'i A] y $& A]
'a[]]b'i A]B y $& A]B
'a[^bc]d'i AED y $& AED
@@ -232,21 +232,21 @@ a[-]?c ac y $& ac
'ab|cd'i ABC y $& AB
'ab|cd'i ABCD y $& AB
'()ef'i DEF y $&-$1 EF-
-'*a'i - c - Quantifier follows nothing before HERE mark in regex m/* << HERE a/
-'(*)b'i - c - Quantifier follows nothing before HERE mark in regex m/(* << HERE )b/
+'*a'i - c - Quantifier follows nothing
+'(*)b'i - c - Quantifier follows nothing
'$b'i B n - -
'a\'i - c - Search pattern not terminated
'a\(b'i A(B y $&-$1 A(B-
'a\(*b'i AB y $& AB
'a\(*b'i A((B y $& A((B
'a\\b'i A\B y $& A\B
-'abc)'i - c - Unmatched ) before HERE mark in regex m/abc) << HERE /
-'(abc'i - c - Unmatched ( before HERE mark in regex m/( << HERE abc/
+'abc)'i - c - Unmatched )
+'(abc'i - c - Unmatched (
'((a))'i ABC y $&-$1-$2 A-A-A
'(a)b(c)'i ABC y $&-$1-$2 ABC-A-C
'a+b+c'i AABBABC y $& ABC
'a{1,}b{1,}c'i AABBABC y $& ABC
-'a**'i - c - Nested quantifiers before HERE mark in regex m/a** << HERE /
+'a**'i - c - Nested quantifiers
'a.+?c'i ABCABC y $& ABC
'a.*?c'i ABCABC y $& ABC
'a.{0,5}?c'i ABCABC y $& ABC
@@ -257,7 +257,7 @@ a[-]?c ac y $& ac
'(a+|b)?'i AB y $&-$1 A-A
'(a+|b){0,1}'i AB y $&-$1 A-A
'(a+|b){0,1}?'i AB y $&-$1 -
-')('i - c - Unmatched ) before HERE mark in regex m/) << HERE (/
+')('i - c - Unmatched )
'[^ab]*'i CDE y $& CDE
'abc'i n - -
'a*'i y $&
@@ -346,7 +346,7 @@ a(?:b|(c|e){1,2}?|d)+?(.) ace y $1$2 ce
(?<!c)b cb n - -
(?<!c)b b y - -
(?<!c)b b y $& b
-(?<%)b - c - Sequence (?<%...) not recognized before HERE mark in regex m/(?<% << HERE )b/
+(?<%)b - c - Sequence (?<%...) not recognized
(?:..)*a aba y $& aba
(?:..)*?a aba y $& a
^(?:b|a(?=(.)))*\1 abc y $& ab
@@ -397,10 +397,10 @@ a(?:b|(c|e){1,2}?|d)+?(.) ace y $1$2 ce
'(ab)\d\1'i ab4Ab y $1 ab
foo\w*\d{4}baz foobar1234baz y $& foobar1234baz
a(?{})b cabd y $& ab
-a(?{)b - c - Sequence (?{...}) not terminated or not {}-balanced before HERE mark in regex m/a(?{ << HERE )b/
-a(?{{})b - c - Sequence (?{...}) not terminated or not {}-balanced before HERE mark in regex m/a(?{ << HERE {})b/
+a(?{)b - c - Sequence (?{...}) not terminated or not {}-balanced
+a(?{{})b - c - Sequence (?{...}) not terminated or not {}-balanced
a(?{}})b - c -
-a(?{"{"})b - c - Sequence (?{...}) not terminated or not {}-balanced before HERE mark in regex m/a(?{ << HERE "{"})b/
+a(?{"{"})b - c - Sequence (?{...}) not terminated or not {}-balanced
a(?{"\{"})b cabd y $& ab
a(?{"{"}})b - c - Unmatched right curly bracket
a(?{$bl="\{"}).b caxbd y $bl {
@@ -441,7 +441,7 @@ x(~~)*(?:(?:F)?)? x~~ y - -
^(\(+)?blah(?(1)(\)))$ blah y ($2) ()
^(\(+)?blah(?(1)(\)))$ blah) n - -
^(\(+)?blah(?(1)(\)))$ (blah n - -
-(?(1?)a|b) a c - Switch condition not recognized before HERE mark in regex m/(?(1? << HERE )a|b)/
+(?(1?)a|b) a c - Switch condition not recognized
(?(1)a|b|c) a c - Switch (?(condition)... contains too many branches
(?(?{0})a|b) a n - -
(?(?{0})b|a) a y $& a
@@ -473,10 +473,10 @@ $(?<=^(a)) a y $1 a
([[:]+) a:[b]: y $1 :[
([[=]+) a=[b]= y $1 =[
([[.]+) a.[b]. y $1 .[
-[a[:xyz: - c - Unmatched [ before HERE mark in regex m/[ << HERE a[:xyz:/
-[a[:xyz:] - c - POSIX class [:xyz:] unknown before HERE mark in regex m/[a[:xyz:] << HERE /
+[a[:xyz: - c - Unmatched [
+[a[:xyz:] - c - POSIX class [:xyz:] unknown
[a[:]b[:c] abc y $& abc
-([a[:xyz:]b]+) pbaq c - POSIX class [:xyz:] unknown before HERE mark in regex m/([a[:xyz:] << HERE b]+)/
+([a[:xyz:]b]+) pbaq c - POSIX class [:xyz:] unknown
[a[:]b[:c] abc y $& abc
([[:alpha:]]+) ABcd01Xy__-- ${nulnul}${ffff} y $1 ABcd
([[:alnum:]]+) ABcd01Xy__-- ${nulnul}${ffff} y $1 ABcd01Xy
@@ -503,8 +503,8 @@ $(?<=^(a)) a y $1 a
([[:^word:]]+) ABcd01Xy__-- ${nulnul}${ffff} y $1 -- ${nulnul}${ffff}
([[:^upper:]]+) ABcd01Xy__-- ${nulnul}${ffff} y $1 cd01
([[:^xdigit:]]+) ABcd01Xy__-- ${nulnul}${ffff} y $1 Xy__-- ${nulnul}${ffff}
-[[:foo:]] - c - POSIX class [:foo:] unknown before HERE mark in regex m/[[:foo:] << HERE ]/
-[[:^foo:]] - c - POSIX class [:^foo:] unknown before HERE mark in regex m/[[:^foo:] << HERE ]/
+[[:foo:]] - c - POSIX class [:foo:] unknown
+[[:^foo:]] - c - POSIX class [:^foo:] unknown
((?>a+)b) aaab y $1 aaab
(?>(a+))b aaab y $1 aaa
((?>[^()]+)|\([^()]*\))+ ((abc(ade)ufh()()x y $& abc(ade)ufh()()x
diff --git a/t/op/regmesg.t b/t/op/regmesg.t
index 7ee1bb4261..24f6f31f77 100644
--- a/t/op/regmesg.t
+++ b/t/op/regmesg.t
@@ -13,8 +13,8 @@ my $debug = 1;
## arrays below. The {#} is a meta-marker -- it marks where the marker should
## go.
-my $marker1 = "HERE";
-my $marker2 = " << HERE ";
+my $marker1 = "<-- HERE";
+my $marker2 = " <-- HERE ";
##
## Key-value pairs of code/error of code that should have fatal errors.
@@ -26,75 +26,75 @@ my $inf_m1 = ($Config{reg_infty} || 32767) - 1;
my $inf_p1 = $inf_m1 + 2;
my @death =
(
- '/[[=foo=]]/' => 'POSIX syntax [= =] is reserved for future extensions before {#} mark in regex m/[[=foo=]{#}]/',
+ '/[[=foo=]]/' => 'POSIX syntax [= =] is reserved for future extensions in regex; marked by {#} in m/[[=foo=]{#}]/',
- '/(?<= .*)/' => 'Variable length lookbehind not implemented before {#} mark in regex m/(?<= .*){#}/',
+ '/(?<= .*)/' => 'Variable length lookbehind not implemented in regex; marked by {#} in m/(?<= .*){#}/',
- '/(?<= x{1000})/' => 'Lookbehind longer than 255 not implemented before {#} mark in regex m/(?<= x{1000}){#}/',
+ '/(?<= x{1000})/' => 'Lookbehind longer than 255 not implemented in regex; marked by {#} in m/(?<= x{1000}){#}/',
- '/(?@)/' => 'Sequence (?@...) not implemented before {#} mark in regex m/(?@{#})/',
+ '/(?@)/' => 'Sequence (?@...) not implemented in regex; marked by {#} in m/(?@{#})/',
- '/(?{ 1/' => 'Sequence (?{...}) not terminated or not {}-balanced before {#} mark in regex m/(?{{#} 1/',
+ '/(?{ 1/' => 'Sequence (?{...}) not terminated or not {}-balanced in regex; marked by {#} in m/(?{{#} 1/',
- '/(?(1x))/' => 'Switch condition not recognized before {#} mark in regex m/(?(1x{#}))/',
+ '/(?(1x))/' => 'Switch condition not recognized in regex; marked by {#} in m/(?(1x{#}))/',
- '/(?(1)x|y|z)/' => 'Switch (?(condition)... contains too many branches before {#} mark in regex m/(?(1)x|y|{#}z)/',
+ '/(?(1)x|y|z)/' => 'Switch (?(condition)... contains too many branches in regex; marked by {#} in m/(?(1)x|y|{#}z)/',
- '/(?(x)y|x)/' => 'Unknown switch condition (?(x) before {#} mark in regex m/(?({#}x)y|x)/',
+ '/(?(x)y|x)/' => 'Unknown switch condition (?(x) in regex; marked by {#} in m/(?({#}x)y|x)/',
- '/(?/' => 'Sequence (? incomplete before {#} mark in regex m/(?{#}/',
+ '/(?/' => 'Sequence (? incomplete in regex; marked by {#} in m/(?{#}/',
- '/(?;x/' => 'Sequence (?;...) not recognized before {#} mark in regex m/(?;{#}x/',
- '/(?<;x/' => 'Sequence (?<;...) not recognized before {#} mark in regex m/(?<;{#}x/',
+ '/(?;x/' => 'Sequence (?;...) not recognized in regex; marked by {#} in m/(?;{#}x/',
+ '/(?<;x/' => 'Sequence (?<;...) not recognized in regex; marked by {#} in m/(?<;{#}x/',
- '/((x)/' => 'Unmatched ( before {#} mark in regex m/({#}(x)/',
+ '/((x)/' => 'Unmatched ( in regex; marked by {#} in m/({#}(x)/',
- "/x{$inf_p1}/" => "Quantifier in {,} bigger than $inf_m1 before {#} mark in regex m/x{{#}$inf_p1}/",
+ "/x{$inf_p1}/" => "Quantifier in {,} bigger than $inf_m1 in regex; marked by {#} in m/x{{#}$inf_p1}/",
- '/x{3,1}/' => 'Can\'t do {n,m} with n > m before {#} mark in regex m/x{3,1}{#}/',
+ '/x{3,1}/' => 'Can\'t do {n,m} with n > m in regex; marked by {#} in m/x{3,1}{#}/',
- '/x**/' => 'Nested quantifiers before {#} mark in regex m/x**{#}/',
+ '/x**/' => 'Nested quantifiers in regex; marked by {#} in m/x**{#}/',
- '/x[/' => 'Unmatched [ before {#} mark in regex m/x[{#}/',
+ '/x[/' => 'Unmatched [ in regex; marked by {#} in m/x[{#}/',
- '/*/', => 'Quantifier follows nothing before {#} mark in regex m/*{#}/',
+ '/*/', => 'Quantifier follows nothing in regex; marked by {#} in m/*{#}/',
- '/\p{x/' => 'Missing right brace on \p{} before {#} mark in regex m/\p{{#}x/',
+ '/\p{x/' => 'Missing right brace on \p{} in regex; marked by {#} in m/\p{{#}x/',
- 'use utf8; /[\p{x]/' => 'Missing right brace on \p{} before {#} mark in regex m/[\p{{#}x]/',
+ 'use utf8; /[\p{x]/' => 'Missing right brace on \p{} in regex; marked by {#} in m/[\p{{#}x]/',
- '/(x)\2/' => 'Reference to nonexistent group before {#} mark in regex m/(x)\2{#}/',
+ '/(x)\2/' => 'Reference to nonexistent group in regex; marked by {#} in m/(x)\2{#}/',
'my $m = "\\\"; $m =~ $m', => 'Trailing \ in regex m/\/',
- '/\x{1/' => 'Missing right brace on \x{} before {#} mark in regex m/\x{{#}1/',
+ '/\x{1/' => 'Missing right brace on \x{} in regex; marked by {#} in m/\x{{#}1/',
- 'use utf8; /[\x{X]/' => 'Missing right brace on \x{} before {#} mark in regex m/[\x{{#}X]/',
+ 'use utf8; /[\x{X]/' => 'Missing right brace on \x{} in regex; marked by {#} in m/[\x{{#}X]/',
- '/[[:barf:]]/' => 'POSIX class [:barf:] unknown before {#} mark in regex m/[[:barf:]{#}]/',
+ '/[[:barf:]]/' => 'POSIX class [:barf:] unknown in regex; marked by {#} in m/[[:barf:]{#}]/',
- '/[[=barf=]]/' => 'POSIX syntax [= =] is reserved for future extensions before {#} mark in regex m/[[=barf=]{#}]/',
+ '/[[=barf=]]/' => 'POSIX syntax [= =] is reserved for future extensions in regex; marked by {#} in m/[[=barf=]{#}]/',
- '/[[.barf.]]/' => 'POSIX syntax [. .] is reserved for future extensions before {#} mark in regex m/[[.barf.]{#}]/',
+ '/[[.barf.]]/' => 'POSIX syntax [. .] is reserved for future extensions in regex; marked by {#} in m/[[.barf.]{#}]/',
- '/[z-a]/' => 'Invalid [] range "z-a" before {#} mark in regex m/[z-a{#}]/',
+ '/[z-a]/' => 'Invalid [] range "z-a" in regex; marked by {#} in m/[z-a{#}]/',
);
##
## Key-value pairs of code/error of code that should have non-fatal warnings.
##
@warning = (
- "m/(?p{ 'a' })/" => "(?p{}) is deprecated - use (??{}) before {#} mark in regex m/(?p{#}{ 'a' })/",
+ "m/(?p{ 'a' })/" => "(?p{}) is deprecated - use (??{}) in regex; marked by {#} in m/(?p{#}{ 'a' })/",
- 'm/\b*/' => '\b* matches null string many times before {#} mark in regex m/\b*{#}/',
+ 'm/\b*/' => '\b* matches null string many times in regex; marked by {#} in m/\b*{#}/',
- 'm/[:blank:]/' => 'POSIX syntax [: :] belongs inside character classes before {#} mark in regex m/[:blank:]{#}/',
+ 'm/[:blank:]/' => 'POSIX syntax [: :] belongs inside character classes in regex; marked by {#} in m/[:blank:]{#}/',
- "m'[\\y]'" => 'Unrecognized escape \y in character class passed through before {#} mark in regex m/[\y{#}]/',
+ "m'[\\y]'" => 'Unrecognized escape \y in character class passed through in regex; marked by {#} in m/[\y{#}]/',
- 'm/[a-\d]/' => 'False [] range "a-\d" before {#} mark in regex m/[a-\d{#}]/',
- 'm/[\w-x]/' => 'False [] range "\w-" before {#} mark in regex m/[\w-{#}x]/',
- "m'\\y'" => 'Unrecognized escape \y passed through before {#} mark in regex m/\y{#}/',
+ 'm/[a-\d]/' => 'False [] range "a-\d" in regex; marked by {#} in m/[a-\d{#}]/',
+ 'm/[\w-x]/' => 'False [] range "\w-" in regex; marked by {#} in m/[\w-{#}x]/',
+ "m'\\y'" => 'Unrecognized escape \y passed through in regex; marked by {#} in m/\y{#}/',
);
my $total = (@death + @warning)/2;
diff --git a/t/pragma/warn/pp_hot b/t/pragma/warn/pp_hot
index b21117ca86..3ee853f6e2 100644
--- a/t/pragma/warn/pp_hot
+++ b/t/pragma/warn/pp_hot
@@ -225,6 +225,10 @@ $x = "19$yy\n";
$x = "19" . $yy . "\n";
$x = "319$yy\n";
$x = "319" . $yy . "\n";
+$yy = 19;
+$x = "ok $yy\n";
+$yy = 9;
+$x = 1 . $yy;
no warnings 'y2k';
$x = "19$yy\n";
$x = "19" . $yy . "\n";
diff --git a/t/pragma/warn/regcomp b/t/pragma/warn/regcomp
index 8b86b5082f..7ab4a796a5 100644
--- a/t/pragma/warn/regcomp
+++ b/t/pragma/warn/regcomp
@@ -29,7 +29,7 @@ $a =~ /(?=a)*/ ;
no warnings 'regexp' ;
$a =~ /(?=a)*/ ;
EXPECT
-(?=a)* matches null string many times before HERE mark in regex m/(?=a)* << HERE / at - line 4.
+(?=a)* matches null string many times in regex; marked by <-- HERE in m/(?=a)* <-- HERE / at - line 4.
########
# regcomp.c [S_study_chunk]
use warnings 'regexp' ;
@@ -38,7 +38,7 @@ $_ = "" ;
no warnings 'regexp' ;
/(?=a)?/;
EXPECT
-Quantifier unexpected on zero-length expression before HERE mark in regex m/(?=a)? << HERE / at - line 4.
+Quantifier unexpected on zero-length expression in regex; marked by <-- HERE in m/(?=a)? <-- HERE / at - line 4.
########
# regcomp.c [S_regatom]
$x = '\m' ;
@@ -47,7 +47,7 @@ $a =~ /a$x/ ;
no warnings 'regexp' ;
$a =~ /a$x/ ;
EXPECT
-Unrecognized escape \m passed through before HERE mark in regex m/a\m << HERE / at - line 4.
+Unrecognized escape \m passed through in regex; marked by <-- HERE in m/a\m <-- HERE / at - line 4.
########
# regcomp.c [S_regpposixcc S_checkposixcc]
#
@@ -61,9 +61,9 @@ no warnings 'regexp' ;
/[:zog:]/;
/[[:zog:]]/;
EXPECT
-POSIX syntax [: :] belongs inside character classes before HERE mark in regex m/[:alpha:] << HERE / at - line 5.
-POSIX syntax [: :] belongs inside character classes before HERE mark in regex m/[:zog:] << HERE / at - line 6.
-POSIX class [:zog:] unknown before HERE mark in regex m/[[:zog:] << HERE ]/
+POSIX syntax [: :] belongs inside character classes in regex; marked by <-- HERE in m/[:alpha:] <-- HERE / at - line 5.
+POSIX syntax [: :] belongs inside character classes in regex; marked by <-- HERE in m/[:zog:] <-- HERE / at - line 6.
+POSIX class [:zog:] unknown in regex; marked by <-- HERE in m/[[:zog:] <-- HERE ]/
########
# regcomp.c [S_checkposixcc]
#
@@ -73,8 +73,8 @@ $_ = "" ;
no warnings 'regexp' ;
/[.zog.]/;
EXPECT
-POSIX syntax [. .] belongs inside character classes before HERE mark in regex m/[.zog.] << HERE / at - line 5.
-POSIX syntax [. .] is reserved for future extensions before HERE mark in regex m/[.zog.] << HERE /
+POSIX syntax [. .] belongs inside character classes in regex; marked by <-- HERE in m/[.zog.] <-- HERE / at - line 5.
+POSIX syntax [. .] is reserved for future extensions in regex; marked by <-- HERE in m/[.zog.] <-- HERE /
########
# regcomp.c [S_checkposixcc]
#
@@ -84,7 +84,7 @@ $_ = "" ;
no warnings 'regexp' ;
/[[.zog.]]/;
EXPECT
-POSIX syntax [. .] is reserved for future extensions before HERE mark in regex m/[[.zog.] << HERE ]/
+POSIX syntax [. .] is reserved for future extensions in regex; marked by <-- HERE in m/[[.zog.] <-- HERE ]/
########
# regcomp.c [S_regclass]
$_ = "";
@@ -109,14 +109,14 @@ no warnings 'regexp' ;
/[[:alpha:]-[:digit:]]/;
/[[:digit:]-[:alpha:]]/;
EXPECT
-False [] range "a-\d" before HERE mark in regex m/[a-\d << HERE ]/ at - line 5.
-False [] range "\d-" before HERE mark in regex m/[\d- << HERE b]/ at - line 6.
-False [] range "\s-" before HERE mark in regex m/[\s- << HERE \d]/ at - line 7.
-False [] range "\d-" before HERE mark in regex m/[\d- << HERE \s]/ at - line 8.
-False [] range "a-[:digit:]" before HERE mark in regex m/[a-[:digit:] << HERE ]/ at - line 9.
-False [] range "[:digit:]-" before HERE mark in regex m/[[:digit:]- << HERE b]/ at - line 10.
-False [] range "[:alpha:]-" before HERE mark in regex m/[[:alpha:]- << HERE [:digit:]]/ at - line 11.
-False [] range "[:digit:]-" before HERE mark in regex m/[[:digit:]- << HERE [:alpha:]]/ at - line 12.
+False [] range "a-\d" in regex; marked by <-- HERE in m/[a-\d <-- HERE ]/ at - line 5.
+False [] range "\d-" in regex; marked by <-- HERE in m/[\d- <-- HERE b]/ at - line 6.
+False [] range "\s-" in regex; marked by <-- HERE in m/[\s- <-- HERE \d]/ at - line 7.
+False [] range "\d-" in regex; marked by <-- HERE in m/[\d- <-- HERE \s]/ at - line 8.
+False [] range "a-[:digit:]" in regex; marked by <-- HERE in m/[a-[:digit:] <-- HERE ]/ at - line 9.
+False [] range "[:digit:]-" in regex; marked by <-- HERE in m/[[:digit:]- <-- HERE b]/ at - line 10.
+False [] range "[:alpha:]-" in regex; marked by <-- HERE in m/[[:alpha:]- <-- HERE [:digit:]]/ at - line 11.
+False [] range "[:digit:]-" in regex; marked by <-- HERE in m/[[:digit:]- <-- HERE [:alpha:]]/ at - line 12.
########
# regcomp.c [S_regclassutf8]
BEGIN {
@@ -148,14 +148,14 @@ no warnings 'regexp' ;
/[[:alpha:]-[:digit:]]/;
/[[:digit:]-[:alpha:]]/;
EXPECT
-False [] range "a-\d" before HERE mark in regex m/[a-\d << HERE ]/ at - line 12.
-False [] range "\d-" before HERE mark in regex m/[\d- << HERE b]/ at - line 13.
-False [] range "\s-" before HERE mark in regex m/[\s- << HERE \d]/ at - line 14.
-False [] range "\d-" before HERE mark in regex m/[\d- << HERE \s]/ at - line 15.
-False [] range "a-[:digit:]" before HERE mark in regex m/[a-[:digit:] << HERE ]/ at - line 16.
-False [] range "[:digit:]-" before HERE mark in regex m/[[:digit:]- << HERE b]/ at - line 17.
-False [] range "[:alpha:]-" before HERE mark in regex m/[[:alpha:]- << HERE [:digit:]]/ at - line 18.
-False [] range "[:digit:]-" before HERE mark in regex m/[[:digit:]- << HERE [:alpha:]]/ at - line 19.
+False [] range "a-\d" in regex; marked by <-- HERE in m/[a-\d <-- HERE ]/ at - line 12.
+False [] range "\d-" in regex; marked by <-- HERE in m/[\d- <-- HERE b]/ at - line 13.
+False [] range "\s-" in regex; marked by <-- HERE in m/[\s- <-- HERE \d]/ at - line 14.
+False [] range "\d-" in regex; marked by <-- HERE in m/[\d- <-- HERE \s]/ at - line 15.
+False [] range "a-[:digit:]" in regex; marked by <-- HERE in m/[a-[:digit:] <-- HERE ]/ at - line 16.
+False [] range "[:digit:]-" in regex; marked by <-- HERE in m/[[:digit:]- <-- HERE b]/ at - line 17.
+False [] range "[:alpha:]-" in regex; marked by <-- HERE in m/[[:alpha:]- <-- HERE [:digit:]]/ at - line 18.
+False [] range "[:digit:]-" in regex; marked by <-- HERE in m/[[:digit:]- <-- HERE [:alpha:]]/ at - line 19.
########
# regcomp.c [S_regclass S_regclassutf8]
use warnings 'regexp' ;
@@ -163,5 +163,5 @@ $a =~ /[a\zb]/ ;
no warnings 'regexp' ;
$a =~ /[a\zb]/ ;
EXPECT
-Unrecognized escape \z in character class passed through before HERE mark in regex m/[a\z << HERE b]/ at - line 3.
+Unrecognized escape \z in character class passed through in regex; marked by <-- HERE in m/[a\z <-- HERE b]/ at - line 3.
diff --git a/thread.h b/thread.h
index 24e2a8d0e8..4744aa0bdd 100644
--- a/thread.h
+++ b/thread.h
@@ -73,6 +73,10 @@
# endif
#endif
+#ifdef DGUX
+# define THREAD_CREATE_NEEDS_STACK (16*1024)
+#endif
+
#ifdef I_MACH_CTHREADS
/* cthreads interface */
@@ -245,8 +249,22 @@
} STMT_END
#endif /* JOIN */
+/* Use an unchecked fetch of thread-specific data instead of a checked one.
+ * It would fail if the key were bogus, but if the key were bogus then
+ * Really Bad Things would be happening anyway. --dan */
+#if (defined(__ALPHA) && (__VMS_VER >= 70000000)) || \
+ (defined(__alpha) && defined(__osf__)) /* Available only on >= 4.0 */
+# define HAS_PTHREAD_UNCHECKED_GETSPECIFIC_NP /* Configure test needed */
+#endif
+
+#ifdef HAS_PTHREAD_UNCHECKED_GETSPECIFIC_NP
+# define PTHREAD_GETSPECIFIC(key) pthread_unchecked_getspecific_np(key)
+#else
+# define PTHREAD_GETSPECIFIC(key) pthread_getspecific(key)
+#endif
+
#ifndef PERL_GET_CONTEXT
-# define PERL_GET_CONTEXT pthread_getspecific(PL_thr_key)
+# define PERL_GET_CONTEXT PTHREAD_GETSPECIFIC(PL_thr_key)
#endif
#ifndef PERL_SET_CONTEXT
diff --git a/util.c b/util.c
index 720bcf0631..12c5f0ddc0 100644
--- a/util.c
+++ b/util.c
@@ -3489,11 +3489,11 @@ Perl_get_context(void)
Perl_croak_nocontext("panic: pthread_getspecific");
return (void*)t;
# else
-# ifdef I_MACH_CTHREADS
+# ifdef I_MACH_CTHREADS
return (void*)cthread_data(cthread_self());
-# else
- return (void*)pthread_getspecific(PL_thr_key);
-# endif
+# else
+ return (void*)PTHREAD_GETSPECIFIC(PL_thr_key);
+# endif
# endif
#else
return (void*)NULL;
diff --git a/utils.lst b/utils.lst
new file mode 100644
index 0000000000..b4a839dfa5
--- /dev/null
+++ b/utils.lst
@@ -0,0 +1,20 @@
+lib/ExtUtils/xsubpp
+pod/pod2html
+pod/pod2latex
+pod/pod2man
+pod/pod2text
+pod/pod2usage
+pod/podchecker
+pod/podselect
+utils/c2ph # link = utils/pstruct
+utils/dprofpp
+utils/h2ph
+utils/h2xs
+utils/perlbug
+utils/perlcc
+utils/perldoc
+utils/pl2pm
+utils/splain
+x2p/a2p # pod = x2p/a2p.pod
+x2p/find2perl
+x2p/s2p # link = x2p/psed
diff --git a/writemain.SH b/writemain.SH
index 18544c1f81..ed8aca69ed 100644
--- a/writemain.SH
+++ b/writemain.SH
@@ -1,4 +1,4 @@
-case $CONFIGDOTSH in
+case $PERL_CONFIG_SH in
'')
if test -f config.sh; then TOP=.;
elif test -f ../config.sh; then TOP=..;