# $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
#
-# Generated on Thu Jun 6 21:58:47 EET DST 2002 [metaconfig 3.0 PL70]
+# Generated on Sat Jun 8 19:17:45 EET DST 2002 [metaconfig 3.0 PL70]
# (with additional metaconfig patches by perlbug@perl.org)
cat >c1$$ <<EOF
and the 'Thread' module offers an interface to both 5005threads and
ithreads (whichever has been configured).
-For IRIX 6.2, you have to have the following patches installed:
-
- 1404 Irix 6.2 Posix 1003.1b man pages
- 1645 IRIX 6.2 & 6.3 POSIX header file updates
- 2000 Irix 6.2 Posix 1003.1b support modules
- 2254 Pthread library fixes
- 2401 6.2 all platform kernel rollup
-
-IMPORTANT: Without patch 2401, a kernel bug in IRIX 6.2 will cause
-your machine to panic and crash when running threaded perl. IRIX 6.3
-and later are okay.
-
=head2 Large file support.
Since Perl 5.6.0, Perl has supported large files (files larger than
=item Porting information
-Specific information for the OS/2, Plan9, VMS and Win32 ports is in the
+Specific information for the OS/2, Plan 9, VMS and Win32 ports is in the
corresponding README files and subdirectories. Additional information,
including a glossary of all those config.sh variables, is in the Porting
subdirectory. Especially Porting/Glossary should come in handy.
README.dgux Notes about DG/UX port
README.dos Notes about DOS/DJGPP port
README.epoc Notes about EPOC port
+README.freebsd Notes about FreeBSD
README.hpux Notes about HP-UX port
README.hurd Notes about GNU/Hurd port
+README.irix Notes about Irix port
README.jp About using Perl and Japanese
README.ko About using Perl and Korean
README.machten Notes about Power MachTen port
sh writemain $(DYNALOADER) $(static_ext) > writemain.tmp
sh mv-if-diff writemain.tmp perlmain.c
+!NO!SUBS!
+case "$osname" in
+cygwin)
+ ;; # Let cygwin/Makefile.SHs do its work.
+*)
+ $spitshell >>Makefile <<'!NO!SUBS!'
perlmain$(OBJ_EXT): perlmain.c
$(CCCMD) $(PLDLFLAGS) $*.c
+!NO!SUBS!
+ ;;
+esac
+$spitshell >>Makefile <<'!NO!SUBS!'
# The file ext.libs is a list of libraries that must be linked in
# for static extensions, e.g. -lm -lgdbm, etc. The individual
# static extension Makefile's add to it.
# Do not 'make _mopup' directly.
_mopup:
rm -f *$(OBJ_EXT) *$(LIB_EXT) all perlmain.c
+ -rmdir .depending
-@test -f extra.pods && rm -f `cat extra.pods`
-@test -f vms/README_vms.pod && rm -f vms/README_vms.pod
-rm -f perl.exp ext.libs extra.pods opmini.o
-rm -f perl.pixie lib*.so.perl.pixie lib*.so.Addrs
-rm -f perl.Addrs perl.Counts t/perl.Addrs t/perl.Counts *perl.xok
-rm -f perlld cygwin.c ld2 libperl*.def libperl*.dll cygperl*.dll *.exe.stackdump
- rm -f perl$(EXE_EXT) suidperl$(EXE_EXT) miniperl$(EXE_EXT) $(LIBPERL) libperl.* microperl
- rm -f opcode.h-old opnames.h-old pp.sym-old pp_proto.h-old
+ -rm -f perl$(EXE_EXT) suidperl$(EXE_EXT) miniperl$(EXE_EXT) $(LIBPERL) libperl.* microperl
+ -rm -f opcode.h-old opnames.h-old pp.sym-old pp_proto.h-old
# Do not 'make _tidy' directly.
_tidy:
+
+!!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+This file is built by metaconfig.
+
This file contains a description of all the shell variables whose value is
determined by the Configure script. Variables intended for use in C
programs (e.g. I_UNISTD) are already described in config_h.SH. [`configpm'
installed perl5.005 or later suitable for running the script
to determine inc_version_list.
+perl5 (perl5.U):
+ This variable contains the full path (if any) to a previously
+ installed perl5.005 or later suitable for running the script
+ to determine inc_version_list.
+
perl (Loc.U):
This variable is defined but not used by Configure.
The value is a plain '' and is not useful.
though in principle we could go snooping around in old
Config.pm files.
-yacc (yacc.U):
- This variable holds the name of the compiler compiler we
- want to use in the Makefile. It can be yacc, byacc, or bison -y.
-
yaccflags (yacc.U):
This variable contains any additional yacc flags desired by the
user. It is up to the Makefile to use this.
# Package name : perl5
# Source directory : .
-# Configuration time: Thu Jun 6 22:13:01 EET DST 2002
+# Configuration time: Sat Jun 8 19:29:36 EET DST 2002
# Configured by : jhi
# Target system : osf1 alpha.hut.fi v4.0 878 alpha
ccversion='V5.6-082'
cf_by='jhi'
cf_email='yourname@yourhost.yourplace.com'
-cf_time='Thu Jun 6 22:13:01 EET DST 2002'
+cf_time='Sat Jun 8 19:29:36 EET DST 2002'
charsize='1'
chgrp=''
chmod='chmod'
path_sep=':'
perl5='perl'
perl=''
-perl_patchlevel='17013'
+perl_patchlevel='17060'
perladmin='yourname@yourhost.yourplace.com'
perllibs='-lm -lutil'
perlpath='/opt/perl/bin/perl'
vendorprefix=''
vendorprefixexp=''
version='5.8.0'
-version_patchlevel_string='version 8 subversion 0 patch 17013'
+version_patchlevel_string='version 8 subversion 0 patch 17060'
versiononly='undef'
vi=''
voidflags='15'
PERL_API_REVISION=5
PERL_API_VERSION=8
PERL_API_SUBVERSION=0
-PERL_PATCHLEVEL=17013
+PERL_PATCHLEVEL=17060
PERL_CONFIG_SH=true
# Variables propagated from previous config.sh file.
pp_sys_cflags='ccflags="$ccflags -DNO_EFF_ONLY_OK"'
/*
* Package name : perl5
* Source directory : .
- * Configuration time: Thu Jun 6 22:13:01 EET DST 2002
+ * Configuration time: Sat Jun 8 19:29:36 EET DST 2002
* Configured by : jhi
* Target system : osf1 alpha.hut.fi v4.0 878 alpha
*/
=head1 BUGS ON CYGWIN
-When I<make> starts, it warns about overriding commands for F<perlmain.o>.
-
Support for swapping real and effective user and group IDs is incomplete.
On WinNT Cygwin provides setuid(), seteuid(), setgid() and setegid().
However, additional Cygwin calls for manipulating WinNT access tokens
--- /dev/null
+If you read this file _as_is_, just ignore the funny characters you
+see. It is written in the POD format (see pod/perlpod.pod) which is
+specifically designed to be readable as is.
+
+=head1 NAME
+
+README.freebsd - Perl version 5 on FreeBSD systems
+
+=head1 DESCRIPTION
+
+This document describes various features of FreeBSD that will affect how Perl
+version 5 (hereafter just Perl) is compiled and/or runs.
+
+=head2 FreeBSD core dumps from readdir_r with ithreads
+
+When perl is configured to use ithreads, it will use re-entrant library calls
+in preference to non-re-entrant versions. There is a bug in FreeBSD's
+C<readdir_r> function that can cause a SEGV when reading large directories.
+A patch is available
+(see http://www.freebsd.org/cgi/query-pr.cgi?pr=misc/30631 )
+and will hopefully be integrated into FreeBSD 4.6.
+
+=head2 $^X doesn't always contain a full path in FreeBSD
+
+perl 5.8.0 sets C<$^X> where possible to a full path by asking the operating
+system. On FreeBSD the full path of the perl interpreter is found by reading
+the symlink F</proc/curproc/file>. There is a bug on FreeBSD, where the
+result of reading this symlink is can be wrong in certain circumstances
+(see http://www.freebsd.org/cgi/query-pr.cgi?pr=35703 ).
+In these cases perl will fall back to the old behaviour of using C's
+argv[0] value for C<$^X>.
+
+=head2 Perl will no more be part of "base FreeBSD"
+
+Not as bad as it sounds--what is means is that Perl will no more be
+part of the B<kernel build system> of FreeBSD. Perl will still very
+probably be part of the "default install", and in any case the latest
+version will be in the ports system. The first FreeBSD version this
+change will affect is 5.0, all 4.n versions will keep the status quo.
+
+=head1 AUTHOR
+
+Nicholas Clark <nick@ccl4.org>, collating wisdom supplied by Slaven Rezic
+and Tim Bunce.
+
+Please report any errors, updates, or suggestions to F<perlbug@perl.org>.
+
--- /dev/null
+If you read this file _as_is_, just ignore the funny characters you
+see. It is written in the POD format (see pod/perlpod.pod) which is
+specifically designed to be readable as is.
+
+=head1 NAME
+
+README.irix - Perl version 5 on Irix systems
+
+=head1 DESCRIPTION
+
+This document describes various features of Irix that will affect how Perl
+version 5 (hereafter just Perl) is compiled and/or runs.
+
+=head2 Building 32-bit Perl in Irix
+
+Use
+
+ sh Configure -Dcc='cc -n32'
+
+to compile Perl 32-bit. Don't bother with -n32 unless you have 7.1
+or later compilers (use cc -version to check).
+
+(Building 'cc -n32' is the default.)
+
+=head2 Building 64-bit Perl in Irix
+
+Use
+
+ sh Configure -Dcc='cc -64'
+
+to compiler Perl 64-bit.
+
+=head2 About Compiler Versions of Irix
+
+Some Irix cc versions, e.g. 7.3.1.1m (try cc -version) have been known
+to have issues (coredumps) when compiling perl.c. If you've used
+-OPT:fast_io=ON and this happens, try removing it. If that fails, or
+you didn't use that, then try adjusting other optimization options
+(-LNO, -INLINE, -O3 to -O2, etcetera). The compiler bug has been
+reported to SGI. (Allen Smith <easmith@beatrice.rutgers.edu>)
+
+=head2 Linker Problems in Irix
+
+If you get complaints about so_locations then search in the file
+hints/irix_6.sh for "lddflags" and do the suggested adjustments.
+(David Billinghurst <David.Billinghurst@riotinto.com.au>)
+
+=head2 Malloc in Irix
+
+Do not try to use Perl's malloc, this will lead into very mysterious
+errors (especially with -Duse64bitall).
+
+=head2 Building with threads
+
+For Irix 6.2, you have to have the following patches installed:
+
+ 1404 Irix 6.2 Posix 1003.1b man pages
+ 1645 Irix 6.2 & 6.3 POSIX header file updates
+ 2000 Irix 6.2 Posix 1003.1b support modules
+ 2254 Pthread library fixes
+ 2401 6.2 all platform kernel rollup
+
+IMPORTANT: Without patch 2401, a kernel bug in Irix 6.2 will cause
+your machine to panic and crash when running threaded perl. Irix 6.3
+and later are okay.
+
+=head1 AUTHOR
+
+Jarkko Hietaniemi <jhi@iki.fi>
+
+Please report any errors, updates, or suggestions to F<perlbug@perl.org>.
+
5.8°ÊÁ°¤Î¡¢¥¹¥¯¥ê¥×¥È¤¬EUC-JP¤Ç¤¢¤ì¤Ð¥ê¥Æ¥é¥ë¤À¤±¤Ï°·¤¦¤³¤È¤¬¤Ç¤¤Þ¤·¤¿¡£¤Þ¤¿¡¢Æþ½ÐÎϤò°·¤¦¥â¥¸¥å¡¼¥ë¤È¤·¤Æ¤ÏJcode.pm¤¬( http://openlab.jp/Jcode/ )¡¢perl4ÍѤΥ桼¥Æ¥£¥ê¥Æ¥£¤È¤·¤Æ¤Ïjcode.pl( http://srekcah.org/jcode/ )¤¬¤½¤ì¤¾¤ì¸ºß¤·¡¢ÆüËܸì¤Î°·¤¨¤ëCGI¤Ç¤è¤¯ÍøÍѤµ¤ì¤Æ¤¤¤ë¤³¤È¤ò¸æ¸¤¸¤ÎÊý¤â¾¯¤Ê¤¯¤Ê¤¤¤«¤È»×¤ï¤ì¤Þ¤¹¡£¤¿¤À¤·¡¢ÆüËܸì¤Ë¤è¤ëÀµµ¬É½¸½¤ò¤¦¤Þ¤¯°·¤¦¤³¤È¤ÏÉÔ²Äǽ¤Ç¤·¤¿¡£
-5.005°ÊÁ°¤ÎPerl¤Ë¤Ï¡¢ÆüËܸì¤ËÆò½¤·¤¿¥í¡¼¥«¥é¥¤¥ºÈÇ¡¢Jperl¤¬Â¸ºß¤·¤Þ¤·¤¿( http://homepage2.nifty.com/kipp/perl/jperl/index.html )¡£¤Þ¤¿¡¢MacOS 9.x/ClassicÍѤÎPerl¡¢MacPerl¤ÎÆüËܸìÈǤâMacJPerl¤È¤·¤Æ¸ºß¤·¤Æ¤Þ¤·¤¿¡£( http://world.std.com/~habilis/macjperl/ ).¤³¤ì¤é¤Ç¤Ïʸ»ú¥³¡¼¥É¤È¤·¤ÆEUC-JP¤Ë²Ã¤¨Shift_JIS¤â¤½¤Î¤Þ¤Þ°·¤¦¤³¤È¤¬¤Ç¤¡¢¤Þ¤¿ÆüËܸì¤Ë¤è¤ëÀµµ¬É½¸½¤ò°·¤¦¤³¤È¤â²Äǽ¤Ç¤·¤¿¡£
+5.005°ÊÁ°¤ÎPerl¤Ë¤Ï¡¢ÆüËܸì¤ËÆò½¤·¤¿¥í¡¼¥«¥é¥¤¥ºÈÇ¡¢Jperl¤¬Â¸ºß¤·¤Þ¤·¤¿( http://homepage2.nifty.com/kipp/perl/jperl/index.html )¡£¤Þ¤¿¡¢Mac OS 9.x/ClassicÍѤÎPerl¡¢MacPerl¤ÎÆüËܸìÈǤâMacJPerl¤È¤·¤Æ¸ºß¤·¤Æ¤Þ¤·¤¿¡£( http://world.std.com/~habilis/macjperl/ ).¤³¤ì¤é¤Ç¤Ïʸ»ú¥³¡¼¥É¤È¤·¤ÆEUC-JP¤Ë²Ã¤¨Shift_JIS¤â¤½¤Î¤Þ¤Þ°·¤¦¤³¤È¤¬¤Ç¤¡¢¤Þ¤¿ÆüËܸì¤Ë¤è¤ëÀµµ¬É½¸½¤ò°·¤¦¤³¤È¤â²Äǽ¤Ç¤·¤¿¡£
Perl5.8¤Ç¤Ï¡¢¤³¤ì¤é¤Îµ¡Ç½¤¬¤¹¤Ù¤ÆPerlËÜÂΤÀ¤±¤Ç¼Â¸½¤Ç¤¤ë¾å¤Ë¡¢ÆüËܸì¤Î¤ß¤Ê¤é¤º¾åµ114¤Îʸ»ú¥³¡¼¥É¤ò¤¹¤Ù¤Æ¡¢¤·¤«¤âƱ»þ¤Ë°·¤¦¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤µ¤é¤Ë¡¢CPAN¤Ê¤É¤«¤é¿·¤·¤¤Ê¸»ú¥³¡¼¥ÉÍѤΥ⥸¥å¡¼¥ë¤òÆþ¼ê¤¹¤ë¤³¤È¤â´Êñ¤Ë¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
The build and install procedures have changed significantly from the 5.004
releases! Make sure you read the "Configuring the Perl Build", "Building
Perl", and "Installing Perl" sections of this document before you build or
-install.
+install. Also please note other changes in the current release by having
+a look at L<perldelta/VMS>.
Also note that, as of Perl version 5.005 and later, an ANSI C compliant
compiler is required to build Perl. VAX C is *not* ANSI compliant, as it
died a natural death some time before the standard was set. Therefore
VAX C will not compile Perl 5.005 or later. We are sorry about that.
-If you are stuck without DEC C (the VAX C license should be good for DEC C,
-but the media charges might prohibit an upgrade), consider getting Gnu C
-instead.
+If you are stuck without Compaq (formerly DEC) C consider trying Gnu C
+instead, though there have been no recent reports of builds using Gnu C.
+There is minimal support for Compaq C++ but this support is not complete;
+if you get it working please write to the vmsperl list (for info see
+L</"Mailing Lists">).
=head2 Introduction to Perl on VMS
If your code 'use's modules, check to see if there is a shareable image for
them, too. In the base perl build, POSIX, IO, Fcntl, Opcode, SDBM_File,
-DCLsym, and Stdio all have shared images that can be installed /SHARE.
+DCLsym, and Stdio, and other extensions all have shared images that can be
+installed /SHARE.
How much of a win depends on your memory situation, but if you are firing
off perl with any regularity (like more than once every 20 seconds or so)
http://www.progis.de/
http://www.lp.se/products/gnu.html
+=head2 Floating Point Considerations
+
+Prior to 5.8.0, Perl simply accepted the default floating point options of the
+C compiler, namely representing doubles with D_FLOAT on VAX and G_FLOAT on
+Alpha. Single precision floating point values are represented in F_FLOAT
+format when either D_FLOAT or G_FLOAT is in use for doubles. Beginning with
+5.8.0, Alpha builds now use IEEE floating point formats by default, which in
+VMS parlance are S_FLOAT for singles and T_FLOAT for doubles. IEEE is not
+available on VAX, so F_FLOAT and D_FLOAT remain the defaults for singles and
+doubles respectively. The available non-default options are G_FLOAT on VAX
+and D_FLOAT or G_FLOAT on Alpha.
+
+The use of IEEE on Alpha introduces NaN, infinity, and denormalization
+capabilities not available with D_FLOAT and G_FLOAT. When using one of those
+non-IEEE formats, silent underflow and overflow are emulated in the conversion
+of strings to numbers, but it is preferable to get the real thing by using
+IEEE where possible.
+
+Regardless of what floating point format you consider preferable, be aware
+that the choice may have an impact on compatibility with external libraries,
+such as database interfaces, and with existing data, such as data created with
+the C<pack> function and written to disk, or data stored via the Storable
+extension. For example, a C<pack("d", $foo)")> will create a D_FLOAT,
+G_FLOAT, or T_FLOAT depending on what your Perl was configured with. When
+written to disk, the value can only be retrieved later by a Perl configured
+with the same floating point option that was in effect when it was created.
+
+To obtain a non-IEEE build on Alpha, simply answer no to the "Use IEEE math?"
+question during the configuration. To obtain an option different from the C
+compiler default on either VAX or Alpha, put in the option that you want in
+answer to the "Any additional cc flags?" question. For example, to obtain a
+G_FLOAT build on VAX, put in C</FLOAT=G_FLOAT>.
+
=head2 Multinet issues with Perl on VMS
Prior to the release of Perl 5.8.0 it was noted that the regression
($text ? " or another paragraph of description" : () );
}
s/n't/n\00t/g; # leave can't, won't etc untouched
- s/^\t\s+(.*)/\n\t$1\n/gm; # Indented lines ===> paragraphs
+ s/^\t\s+(.*)/\n$1/gm; # Indented lines ===> new paragraph
s/^(?<!\n\n)\t(.*)/$1/gm; # Not indented lines ===> text
s{([\'\"])(?=[^\'\"\s]*[./][^\'\"\s]*\1)([^\'\"\s]+)\1}(F<$2>)g; # '.o'
s{([\'\"])([^\'\"\s]+)\1}(C<$2>)g; # "date" command
}
if ($opts{glossary}) {
- <GLOS>; # Skip the preamble
+ <GLOS>; # Skip the "DO NOT EDIT"
+ <GLOS>; # Skip the preamble
while (<GLOS>) {
process;
print CONFIG;
my @optimize = ();
if ($^O eq 'VMS') {
if (defined($Config{ccname})) {
- if ($Config{ccversion} <= 50390006 && grep(/VMS_VAX/, @INC) && ($Config{ccname} eq 'DEC')) {
+ if (grep(/VMS_VAX/, @INC) && ($Config{ccname} eq 'DEC')) {
+ # VAX compiler optimizer even as late as v6.4 gets stuck
@optimize = ("OPTIMIZE","/Optimize=(NODISJOINT)");
}
}
my $grk = "grk$$";
my $utf = "utf$$";
-my $fail1 = "fail$$";
-my $fail2 = "fail_$$";
+my $fail1 = "fa$$";
+my $fail2 = "fb$$";
my $russki = "koi8r$$";
if (open(GRK, ">$grk")) {
}
END {
- unlink($grk, $utf, $fail1, $russki);
+ unlink($grk, $utf, $fail1, $fail2, $russki);
}
$threads::shared::threads_shared = 1;
-sub _thrcnt { 42 }
sub threads::shared::tie::SPLICE
{
use ExtUtils::testlib;
use strict;
-BEGIN { print "1..17\n" };
+BEGIN { print "1..13\n" };
use threads;
-use threads::shared qw(:DEFAULT _thrcnt _refcnt _id);
+use threads::shared qw(:DEFAULT _refcnt _id);
ok(1,1,"loaded");
my $foo;
share($foo);
ok(3, ${$foo{foo}} eq "test", "Check deref after assign");
threads->create(sub{${$foo{foo}} = "test2";})->join();
ok(4, $foo eq "test2", "Check after assign in another thread");
-skip(5, _thrcnt($foo) == 2, "Check refcount");
my $bar = delete($foo{foo});
-ok(6, $$bar eq "test2", "check delete");
-skip(7, _thrcnt($foo) == 1, "Check refcount after delete");
+ok(5, $$bar eq "test2", "check delete");
threads->create( sub {
my $test;
share($test);
$test = "thread3";
$foo{test} = \$test;
})->join();
-ok(8, ${$foo{test}} eq "thread3", "Check reference created in another thread");
+ok(6, ${$foo{test}} eq "thread3", "Check reference created in another thread");
my $gg = $foo{test};
$$gg = "test";
-ok(9, ${$foo{test}} eq "test", "Check reference");
-skip(10, _thrcnt($gg) == 2, "Check refcount");
+ok(7, ${$foo{test}} eq "test", "Check reference");
my $gg2 = delete($foo{test});
-skip(11, _thrcnt($gg) == 1, "Check refcount");
-ok(12, _id($$gg) == _id($$gg2),
+ok(8, _id($$gg) == _id($$gg2),
sprintf("Check we get the same thing (%x vs %x)",
_id($$gg),_id($$gg2)));
-ok(13, $$gg eq $$gg2, "And check the values are the same");
-ok(14, keys %foo == 0, "And make sure we realy have deleted the values");
+ok(9, $$gg eq $$gg2, "And check the values are the same");
+ok(10, keys %foo == 0, "And make sure we realy have deleted the values");
{
my (%hash1, %hash2);
share(%hash1);
share(%hash2);
$hash1{hash} = \%hash2;
$hash2{"bar"} = "foo";
- ok(15, $hash1{hash}->{bar} eq "foo", "Check hash references work");
+ ok(11, $hash1{hash}->{bar} eq "foo", "Check hash references work");
threads->create(sub { $hash2{"bar2"} = "foo2"})->join();
- ok(16, $hash1{hash}->{bar2} eq "foo2", "Check hash references work");
+ ok(12, $hash1{hash}->{bar2} eq "foo2", "Check hash references work");
threads->create(sub { my (%hash3); share(%hash3); $hash2{hash} = \%hash3; $hash3{"thread"} = "yes"})->join();
- ok(17, $hash1{hash}->{hash}->{thread} eq "yes", "Check hash created in another thread");
+ ok(13, $hash1{hash}->{hash}->{thread} eq "yes", "Check hash created in another thread");
}
use ExtUtils::testlib;
use strict;
-BEGIN { print "1..21\n" };
+BEGIN { print "1..14\n" };
use threads;
use threads::shared;
ok(1,1,"loaded");
ok(13, $seen{"foo"} == 1, "Keys..");
threads->create(sub { %hash = () })->join();
ok(14, keys %hash == 0, "Check clear");
-skip(15, threads::shared::_thrcnt(%hash) == 1, "thrcnt");
-threads->create(sub { skip(16, threads::shared::_thrcnt(%hash) == 2, "thrcnt is up")})->join();
-skip(17, threads::shared::_thrcnt(%hash) == 1, "thrcnt is down");
-{
- my $test;
- my $test2;
- share($test);
- $test = \%hash;
- $test2 = \%hash;
- skip(18, threads::shared::_thrcnt(%hash) == 2, "thrcnt is up on shared reference");
- $test = "bar";
- skip(19 , threads::shared::_thrcnt(%hash) == 1, "thrcnt is down when shared reference is dropped");
- $test = $test2;
- skip(20, threads::shared::_thrcnt(%hash) == 2, "thrcnt is up on shared reference");
-}
-skip(21 , threads::shared::_thrcnt(%hash) == 1, "thrcnt is down when shared reference is killed");
sub copy_if_diff {
my($from,$to)=@_;
return 1 if (($^O eq 'VMS') && (-d $from));
- -f $from || warn "$0: $from not found";
+ my $perlpodbadsymlink;
+ if ($from =~ m!^pod/perl[\w-]+\.pod$! &&
+ -l $from &&
+ ! -e $from) {
+ # Some Linux implementations have problems traversing over
+ # multiple symlinks (when going over NFS?) and fail to read
+ # the symlink target. Combine this with the fact that some
+ # of the pod files (the perl$OS.pod) are symlinks (to ../README.$OS),
+ # and you end up with those pods not getting installed.
+ $perlpodbadsymlink = 1;
+ }
+ -f $from || $perlpodbadsymlink || warn "$0: $from not found";
$packlist->{$to} = { type => 'file' };
if (compare($from, $to) || $nonono) {
safe_unlink($to); # In case we don't have write permissions.
if ($nonono) {
$from = $depth . "/" . $from if $depth;
}
+ if ($perlpodbadsymlink && $from =~ m!^pod/perl(.+)\.pod$!) {
+ $from = "README.$1";
+ }
copy($from, $to);
# Restore timestamps if it's a .a library or for OS/2.
if (!$nonono && ($Is_OS2 || $to =~ /\.a$/)) {
use 5.006;
use Carp;
use warnings;
-$VERSION = '0.76';
+$VERSION = '0.77';
# $DB::single=1;
my %symcache;
=head1 VERSION
-This document describes version 0.76 of Attribute::Handlers,
-released November 15, 2001.
+This document describes version 0.77 of Attribute::Handlers,
+released June 8, 2002.
=head1 SYNOPSIS
- Added $VERSION numbrs to demo modules (seems bizarre to me, but
they're core too now).
+
+
+0.77 Sat Jun 8 22:58:56 CEST 2002
+
+ - Since Attribute::Handlers now is core, I will refer to changes
+ with their patch number, please read Porting/repository.pod from
+ your a perl tarball for more information.
+
+ - Brought up to date with perl 5.8RC1 version
+ will be 5.8 if no more changes come in
+
+ - [#13686] This changes the behaviour of lexical attributes.
+ Prior to this lexical attributes were done at a compile time,
+ and they would loose their attribute on the next run over them.
+ Now perl 5.8 calls the attribute handler runtime whenever it hits my.
+
+ - [#14448] Fixes cases with too high refcounts on lexical attributes
+
+ - [#15945] Do not warn about too late CHECK and INIT block if
+ A::H is pulled in using a require.
+
==============================================================================
- Release of version 0.76 of Attribute::Handlers
+ Release of version 0.77 of Attribute::Handlers
==============================================================================
==============================================================================
-CHANGES IN VERSION 0.76
+0.77 Sat Jun 8 22:58:56 CEST 2002
+ - Since Attribute::Handlers now is core, I will refer to changes
+ with their patch number, please read Porting/repository.pod from
+ your a perl tarball for more information.
- - Fixed documentation nit (thanks Rick)
+ - Brought up to date with perl 5.8RC1 version
+ will be 5.8 if no more changes come in
- - Improving intuitiveness of autotie mechanism (thanks Marcel)
+ - [#13686] This changes the behaviour of lexical attributes.
+ Prior to this lexical attributes were done at a compile time,
+ and they would loose their attribute on the next run over them.
+ Now perl 5.8 calls the attribute handler runtime whenever it hits my.
- - Added $VERSION numbrs to demo modules (seems bizarre to me, but
- they're core too now).
+ - [#14448] Fixes cases with too high refcounts on lexical attributes
+
+ - [#15945] Do not warn about too late CHECK and INIT block if
+ A::H is pulled in using a require.
==============================================================================
# (correspondingly "not ok 13") depending on the success of chunk 13
# of the test code):
-sub ok { $::count++; push @::results, [$_[1], $_[0]?"":"not "]; }
+sub ok { $::count++; push @::results, [$_[1], $_[0]?"":"not ", defined($_[2])?$_[2]:""]; }
END { print "1..$::count\n";
- print map "$_->[1]ok $_->[0]\n",
+ print map "$_->[1]ok $_->[0] $_->[2]\n",
sort {$a->[0]<=>$b->[0]}
grep $_->[0], @::results }
ok( $out eq "begin\nbye\n", 45 );
{ my $dummy : Dummy; $dummy = bless {}, 'Dummy'; }
-ok( $out eq "begin\nbye\nbye\n", 46 );
-
+if($] < 5.008) {
+ok( 1, 46, " # skip lexicals are not runtime prior to 5.8");
+} else {
+ok( $out eq "begin\nbye\nbye\n", 46);
+}
# are lexical attributes reapplied correctly?
sub dummy { my $dummy : Dummy; }
$applied = 0;
dummy(); dummy();
+if($] < 5.008) {
+ok(1, 47, " # skip does not work with perl prior to 5.8");
+} else {
ok( $applied == 2, 47 );
-
+}
# 45-47 again, but for our variables
$out = "begin\n";
{ our $dummy; $dummy = bless {}, 'Dummy'; }
ok( $out eq "begin\n", 48 );
-{ our $dummy : Dummy; $dummy = bless {}, 'Dummy'; }
+{ no warnings; our $dummy : Dummy; $dummy = bless {}, 'Dummy'; }
ok( $out eq "begin\nbye\n", 49 );
undef $::dummy;
ok( $out eq "begin\nbye\nbye\n", 50 );
# are lexical attributes reapplied correctly?
-sub dummy_our { our $banjo : Dummy; }
+sub dummy_our { no warnings; our $banjo : Dummy; }
$applied = 0;
dummy_our(); dummy_our();
ok( $applied == 0, 51 );
my $groucho : Stooge;
};
my $match = $@ =~ /^Won't be able to apply END handler/;
+if($] < 5.008) {
+ok(1,52 ,"# Skip, no difference between lexical handlers and normal handlers prior to 5.8");
+} else {
ok( $match, 52 );
+}
+
*OSNAME
*LAST_REGEXP_CODE_RESULT
*EXCEPTIONS_BEING_CAUGHT
+ *LAST_SUBMATCH_RESULT
@LAST_MATCH_START
@LAST_MATCH_END
);
# Matching.
*LAST_PAREN_MATCH = \$+ ;
+ *LAST_SUBMATCH_RESULT = \$^N ;
*LAST_MATCH_START = \@- ;
*LAST_MATCH_END = \@+ ;
!GROK!THIS!
$spitshell >>makedepend <<'!NO!SUBS!'
+if test -d .depending; then
+ echo "$0: Already running, exiting."
+ exit 0
+fi
+
+mkdir .depending
+
# This script should be called with
# sh ./makedepend MAKE=$(MAKE)
case "$1" in
$rm $mf.new
$echo "# WARNING: Put nothing here or make depend will gobble it up!" >> $mf
$rm -rf .deptmp UU .shlist .clist .hlist .hsed
+rmdir .depending
!NO!SUBS!
$eunicefix makedepend
*
* [1] Trying to establish a condition handler to trap floating point
* exceptions is not a good idea. */
-#if defined(VMS) && !defined(__IEEE_FP) && defined(NV_MAX_10_EXP)
+ /* UNICOS fp is similarly non-IEEE. */
+#if ((defined(VMS) && !defined(__IEEE_FP)) || defined(_UNICOS)) && defined(NV_MAX_10_EXP)
if ((log10(value) + exponent) >= (NV_MAX_10_EXP))
return negative ? 0.0 : NV_MAX;
#endif
podnames = perl perlbook perlboot perlbot perldata perldebtut perldiag perldsc perlform perlfunc perlipc perllol perlmod perlmodlib perlmodinstall perlnewmod perlop perlopentut perlpod perlrequick perlretut perlref perlreftut perlrun perlsec perlstyle perlsub perlsyn perltie perltoc perltooc perltoot perltrap perlutil perlvar
faqpodnames = perlfaq perlfaq1 perlfaq2 perlfaq3 perlfaq4 perlfaq5 perlfaq6 perlfaq7 perlfaq8 perlfaq9
advpodnames = perlapi perlapio perlcall perlclib perlcompile perldebguts perldbmfilter perldebug perldelta perldiag perlebcdic perlembed perlfilter perlfor perlguts perlhack perlhist perlintern perliol perlnumber perlobj perlre perlthrtut perltodo perlunicode perlxs perlxs perlxstut
-archpodnames = perlaix perlamiga perlapollo perlbeos perlbs2000 perlce perlcygwin perldgux perldos perlepoc perlhpux perlhurd perlmachten perlmacos perlmint perlmpeix perlnetware perlos2 perlos390 perlplan9 perlqnx perlsolaris perltru64 perlvmesa perlvms perlvos perlwin32
+archpodnames = perlaix perlamiga perlapollo perlbeos perlbs2000 perlce perlcygwin perldgux perldos perlepoc perlfreebsd perlhpux perlhurd perlirix perlmachten perlmacos perlmint perlmpeix perlnetware perlos2 perlos390 perlplan9 perlqnx perlsolaris perltru64 perlvmesa perlvms perlvos perlwin32
libpods = ${podnames:%=pod/%.pod}
perldgux
perldos
perlepoc
+ perlfreebsd
perlhpux
perlhurd
+ perlirix
perlmachten
perlmacos
perlmint
perldgux Perl notes for DG/UX
perldos Perl notes for DOS
perlepoc Perl notes for EPOC
+ perlfreebsd Perl notes for FreeBSD
perlhpux Perl notes for HP-UX
perlhurd Perl notes for Hurd
+ perlirix Perl notes for Irix
perlmachten Perl notes for Power MachTen
perlmacos Perl notes for Mac OS (Classic)
perlmint Perl notes for MiNT
coordinated (while 5.8.0 was still called 5.7.something).
Changes that were integrated into the 5.6.1 release are marked C<[561]>.
-Changes that also appear in 5.6.1 but have been improved since are marked
-C<[561+]>.
+Many of these changes have been further developed since 5.6.1 was released,
+those are marked C<[561+]>.
You can see the list of changes in the 5.6.1 release (both from the
5.005_03 release and the 5.6.0 release) by reading L<perl561delta>.
=item *
+In future releases, non-PerlIO aware XS modules may become completely
+unsupported. Since PerlIO is a drop-in replacement for stdio, this
+shouldn't be that drastic a change.
+
+=item *
+
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
=item *
+The C<exec LIST> and C<system LIST> operations will produce fatal
+errors on tainted data in some future release.
+
+=item *
+
The existing behaviour when localising tied arrays and hashes is wrong,
and will be changed in a future release, so do not rely on the existing
behaviour. See L<"Localising Tied Arrays and Hashes Is Broken">.
=item *
+C<do> followed by a bareword now ensures that this bareword isn't
+a keyword (to avoid a bug where C<do q(foo.pl)> tried to call
+subroutine called C<q>). This means that for example instead of
+C<do format()> you must write C<do &format()>.
+
+=item *
+
The builtin dump() now gives an optional warning
C<dump() better written as CORE::dump()>,
meaning that by default C<dump(...)> is resolved as the builtin
In other taint news, the C<exec LIST> and C<system LIST> have now been
considered too risky (think C<exec @ARGV>: it can start any program
-with any arguments), and now the said forms cause a warning.
-You should carefully launder the arguments to guarantee their
-validity. In future releases of Perl the forms will become fatal
-errors so consider starting laundering now.
+with any arguments), and now the said forms cause a warning under
+lexical warnings. You should carefully launder the arguments to
+guarantee their validity. In future releases of Perl the forms will
+become fatal errors so consider starting laundering now.
=item *
Use of C</g> with C<split> elicits C<Use of /g modifier is meaningless
in split>.
+=item *
+
+Support for the C<CLONE> special subroutine had been added.
+With ithreads, when a new thread is created, all Perl data is cloned,
+however non-Perl data cannot be cloned automatically. In C<CLONE> you
+can do whatever you need to do, like for example handle the cloning of
+non-Perl data, if necessary. C<CLONE> will be executed once for every
+package that has it defined or inherited. It will be called in the
+context of the new thread, so all modifications are made in the new area.
+
+See L<perlmod>
+
=back
=head1 Modules and Pragmata
as perlI<platform>:
perlaix perlamiga perlapollo perlbeos perlbs2000
- perlce perlcygwin perldgux perldos perlepoc perlhpux
- perlhurd perlmachten perlmacos perlmint perlmpeix
+ perlce perlcygwin perldgux perldos perlepoc perlfreebsd perlhpux
+ perlhurd perlirix perlmachten perlmacos perlmint perlmpeix
perlnetware perlos2 perlos390 perlplan9 perlqnx perlsolaris
perltru64 perluts perlvmesa perlvms perlvos perlwin32
+These documents usually detail one or more of the following subjects:
+configuring, building, testing, installing, and sometimes also using
+Perl on the said platform.
+
Eastern Asian Perl users are now welcomed in their own languages:
README.jp (Japanese), README.ko (Korean), README.cn (simplified
Chinese) and README.tw (traditional Chinese), which are written in
=item *
-All but the first argument of the IO syswrite() method are now optional.
-
-=item *
-
$AUTOLOAD, sort(), lock(), and spawning subprocesses
in multiple threads simultaneously are now thread-safe.
VMS
+See L</"Socket Extension Dynamic in VMS"> and L</"IEEE-format Floating Point
+Default on OpenVMS Alpha"> for important changes not otherwise listed here.
+
chdir() now works better despite a CRT bug; now works with MULTIPLICITY
(see INSTALL); now works with Perl's malloc.
POSIX-style signals are now emulated much better on VMS versions prior
to 7.0.
-The Socket extension is now dynamically loaded instead of being
-statically built in.
-
The C<system> function and backticks operator have improved
functionality and better error handling. [561]
threadsafe. This particular test stress tests the localtime() call to
find out whether it is threadsafe. See L<perlthrtut> for more information.
+=head2 FreeBSD built with ithreads coredumps reading large directories
+
+This is a known bug in FreeBSD's readdir_r() (see L<perlfreebsd>
+(README.freebsd)), which hopefully will be fixed in FreeBSD 4.6.
+
=head2 FreeBSD Failing locale Test 117 For ISO8859-15 Locales
The ISO8859-15 locales may fail the locale test 117 in FreeBSD.
=head1 NAME
-perlfork - Perl's fork() emulation (EXPERIMENTAL, subject to change)
+perlfork - Perl's fork() emulation
=head1 SYNOPSIS
- WARNING: As of the 5.6.1 release, the fork() emulation continues
- to be an experimental feature. Use in production applications is
- not recommended. See the "BUGS" and "CAVEATS AND LIMITATIONS"
- sections below.
+ NOTE: As of the 5.8.0 release, fork() emulation has considerably
+ matured. However, there are still a few known bugs and differences
+ from real fork() that might affect you. See the "BUGS" and
+ "CAVEATS AND LIMITATIONS" sections below.
Perl provides a fork() keyword that corresponds to the Unix system call
of the same name. On most Unix-like platforms where the fork() system
=item *
-Perl's regular expression engine currently does not play very nicely
-with the fork() emulation. There are known race conditions arising
-from the regular expression engine modifying state carried in the opcode
-tree at run time (the fork() emulation relies on the opcode tree being
-immutable). This typically happens when the regex contains paren groups
-or variables interpolated within it that force a run time recompilation
-of the regex. Due to this major bug, the fork() emulation is not
-recommended for use in production applications at this time.
-
-=item *
-
Having pseudo-process IDs be negative integers breaks down for the integer
C<-1> because the wait() and waitpid() functions treat this number as
being special. The tacit assumption in the current implementation is that
=item *
+In certain cases, the OS-level handles created by the pipe(), socket(),
+and accept() operators are apparently not duplicated accurately in
+pseudo-processes. This only happens in some situations, but where it
+does happen, it may result in deadlocks between the read and write ends
+of pipe handles, or inability to send or receive data across socket
+handles.
+
+=item *
+
This document may be incomplete in some respects.
=back
specified, it is truncated.
As an alternate form of right justification, you may also use "#"
-characters (with an optional ".") to specify a numeric field. This way
-you can line up the decimal points. If any value supplied for these
-fields contains a newline, only the text up to the newline is printed.
-Finally, the special field "@*" can be used for printing multi-line,
-nontruncated values; it should appear by itself on a line.
+characters (with an optional ".") to specify a numeric field. This way
+you can line up the decimal points. With a "0" (zero) instead of the
+first "#", the formatted number will be padded with leading zeroes if
+necessary. If any value supplied for these fields contains a newline,
+only the text up to the newline is printed. Finally, the special field
+"@*" can be used for printing multi-line, nontruncated values; it
+should appear by itself on a line.
The values are specified on the following line in the same order as
the picture fields. The expressions providing the values should be
open(FOO, '-|', "cat", '-n', $file);
The last example in each block shows the pipe as "list form", which is
-not yet supported on all platforms.
+not yet supported on all platforms. A good rule of thumb is that if
+your platform has true C<fork()> (in other words, if your platform is
+UNIX) you can use the list form.
See L<perlipc/"Safe Pipe Opens"> for more examples of this.
The only currently recognized attribute is C<unique> which indicates
that a single copy of the global is to be used by all interpreters
should the program happen to be running in a multi-interpreter
-environment. (The default behaviour would be for each interpreter to
-have its own copy of the global.) In such an environment, this
-attribute also has the effect of making the global readonly.
-Examples:
+environment. (The default behaviour would be for each interpreter
+to have its own copy of the global.) Examples:
our @EXPORT : unique = qw(foo);
our %EXPORT_TAGS : unique = (bar => [qw(aa bb cc)]);
our $VERSION : unique = "1.00";
+Note that this attribute also has the effect of making the global
+readonly in the main interpreter after the first new interpreter
+has been cloned (for example, after the first new thread has been
+created).
+
Multi-interpreter environments can come to being either through the
fork() emulation on Windows platforms, or by embedding perl in a
multi-threaded application. The C<unique> attribute does nothing in
Ithreads work by cloning the data tree so that no data is shared
between different threads. These threads can be used using the threads
-module or by doing fork() on win32 (fake fork() support). When a thread is
-cloned all perl data is cloned, however non perl data cannot be cloned.
-Perl after 5.7.2 has support for the C<CLONE> keyword. C<CLONE> will be
-executed once for every package that has it defined (or inherits it).
-It will be called in the context of the new thread, so all modifications
-are made in the new area.
+module or by doing fork() on win32 (fake fork() support). When a
+thread is cloned all Perl data is cloned, however non-Perl data cannot
+be cloned automatically. Perl after 5.7.2 has support for the C<CLONE>
+special subroutine . In C<CLONE> you can do whatever you need to do,
+like for example handle the cloning of non-Perl data, if necessary.
+C<CLONE> will be executed once for every package that has it defined
+(or inherits it). It will be called in the context of the new thread,
+so all modifications are made in the new area.
If you want to CLONE all objects you will need to keep track of them per
package. This is simply done using a hash and Scalar::Util::weaken().
Depending on the vicissitudes of your runtime system, even these calls
may need C<binmode> or C<O_BINARY> first. Systems known to be free of
-such difficulties include Unix, the Mac OS, Plan9, and Inferno.
+such difficulties include Unix, the Mac OS, Plan 9, and Inferno.
=head2 File Locking
=item *
-Plan 9, F<README.plan9>
+S<Plan 9>, F<README.plan9>
=back
=item chown LIST
-Not implemented. (S<Mac OS>, Win32, Plan9, S<RISC OS>, VOS)
+Not implemented. (S<Mac OS>, Win32, S<Plan 9>, S<RISC OS>, VOS)
Does nothing, but won't fail. (Win32)
=item chroot
-Not implemented. (S<Mac OS>, Win32, VMS, Plan9, S<RISC OS>, VOS, VM/ESA)
+Not implemented. (S<Mac OS>, Win32, VMS, S<Plan 9>, S<RISC OS>, VOS, VM/ESA)
=item crypt PLAINTEXT,SALT
=item dbmclose HASH
-Not implemented. (VMS, Plan9, VOS)
+Not implemented. (VMS, S<Plan 9>, VOS)
=item dbmopen HASH,DBNAME,MODE
-Not implemented. (VMS, Plan9, VOS)
+Not implemented. (VMS, S<Plan 9>, VOS)
=item dump LABEL
=item getnetbyname NAME
-Not implemented. (S<Mac OS>, Win32, Plan9)
+Not implemented. (S<Mac OS>, Win32, S<Plan 9>)
=item getpwuid UID
=item getnetbyaddr ADDR,ADDRTYPE
-Not implemented. (S<Mac OS>, Win32, Plan9)
+Not implemented. (S<Mac OS>, Win32, S<Plan 9>)
=item getprotobynumber NUMBER
=item getnetent
-Not implemented. (S<Mac OS>, Win32, Plan9)
+Not implemented. (S<Mac OS>, Win32, S<Plan 9>)
=item getprotoent
-Not implemented. (S<Mac OS>, Win32, Plan9)
+Not implemented. (S<Mac OS>, Win32, S<Plan 9>)
=item getservent
-Not implemented. (Win32, Plan9)
+Not implemented. (Win32, S<Plan 9>)
=item sethostent STAYOPEN
-Not implemented. (S<Mac OS>, Win32, Plan9, S<RISC OS>)
+Not implemented. (S<Mac OS>, Win32, S<Plan 9>, S<RISC OS>)
=item setnetent STAYOPEN
-Not implemented. (S<Mac OS>, Win32, Plan9, S<RISC OS>)
+Not implemented. (S<Mac OS>, Win32, S<Plan 9>, S<RISC OS>)
=item setprotoent STAYOPEN
-Not implemented. (S<Mac OS>, Win32, Plan9, S<RISC OS>)
+Not implemented. (S<Mac OS>, Win32, S<Plan 9>, S<RISC OS>)
=item setservent STAYOPEN
-Not implemented. (Plan9, Win32, S<RISC OS>)
+Not implemented. (S<Plan 9>, Win32, S<RISC OS>)
=item endpwent
=item endnetent
-Not implemented. (S<Mac OS>, Win32, Plan9)
+Not implemented. (S<Mac OS>, Win32, S<Plan 9>)
=item endprotoent
-Not implemented. (S<Mac OS>, Win32, Plan9)
+Not implemented. (S<Mac OS>, Win32, S<Plan 9>)
=item endservent
-Not implemented. (Plan9, Win32)
+Not implemented. (S<Plan 9>, Win32)
=item getsockopt SOCKET,LEVEL,OPTNAME
-Not implemented. (Plan9)
+Not implemented. (S<Plan 9>)
=item glob EXPR
=item msgrcv ID,VAR,SIZE,TYPE,FLAGS
-Not implemented. (S<Mac OS>, Win32, VMS, Plan9, S<RISC OS>, VOS)
+Not implemented. (S<Mac OS>, Win32, VMS, S<Plan 9>, S<RISC OS>, VOS)
=item open FILEHANDLE,EXPR
=item setsockopt SOCKET,LEVEL,OPTNAME,OPTVAL
-Not implemented. (Plan9)
+Not implemented. (S<Plan 9>)
=item shmctl ID,CMD,ARG
VM/ESA
1) in DOS mode either the DOS or OS/2 ports can be used
- 2) compilers: Borland, Cygwin (GCC), MinGW (GCC), VC6
+ 2) compilers: Borland, MinGW (GCC), VC6
The following platforms worked with the previous releases (5.6 and
5.7), but we did not manage either to fix or to test these in time
for the 5.8.0 release. There is a very good chance that many of these
will work fine with the 5.8.0. The only one known for certain to be
-broken for 5.8.0 is the AmigaOS.
+broken for 5.8.0 is the AmigaOS (for which 5.6.1 and 5.7.2 can be used)
AmigaOS
+ BSD/OS
DomainOS
Hurd
LynxOS
MachTen
PowerMAX
+ PowerUX
SCO SV
SunOS 4
SVR4
3b1
A/UX
- BSD/OS
ConvexOS
CX/UX
DC/OSx
OpenSTEP
Opus
Plan 9
- PowerUX
RISC/os
- SCO ODT/OSR
+ SCO ODT/OSR
Stellar
SVR2
TI1500
TitanOS
Ultrix
Unisys Dynix
- Unixware
The following platforms have their own source code distributions and
binaries available via http://www.cpan.org/ports/
=head1 SEE ALSO
L<perlaix>, L<perlamiga>, L<perlapollo>, L<perlbeos>, L<perlbs2000>,
-L<perlce>, L<perlcygwin>, L<perldgux>, L<perldos>, L<perlepoc>, L<perlebcdic>,
-L<perlhurd>, L<perlhpux>, L<perlmachten>, L<perlmacos>, L<perlmint>,
-L<perlmpeix>, L<perlnetware>, L<perlos2>, L<perlos390>, L<perlplan9>,
-L<perlqnx>, L<perlsolaris>, L<perltru64>, L<perlunicode>,
-L<perlvmesa>, L<perlvms>, L<perlvos>, L<perlwin32>, and L<Win32>.
+L<perlce>, L<perlcygwin>, L<perldgux>, L<perldos>, L<perlepoc>,
+L<perlebcdic>, L<perlfreebsd>, L<perlhurd>, L<perlhpux>, L<perlirix>,
+L<perlmachten>, L<perlmacos>, L<perlmint>, L<perlmpeix>,
+L<perlnetware>, L<perlos2>, L<perlos390>, L<perlplan9>, L<perlqnx>,
+L<perlsolaris>, L<perltru64>, L<perlunicode>, L<perlvmesa>,
+L<perlvms>, L<perlvos>, L<perlwin32>, and L<Win32>.
=head1 AUTHORS / CONTRIBUTORS
match. C<$+> returns whatever the last bracket match matched.
C<$&> returns the entire matched string. (At one point C<$0> did
also, but now it returns the name of the program.) C<$`> returns
-everything before the matched string. And C<$'> returns everything
-after the matched string.
+everything before the matched string. C<$'> returns everything
+after the matched string. And C<$^N> contains whatever was matched by
+the most-recently closed group (submatch). C<$^N> can be used in
+extended patterns (see below), for example to assign a submatch to a
+variable.
The numbered variables ($1, $2, $3, etc.) and the related punctuation
-set (C<$+>, C<$&>, C<$`>, and C<$'>) are all dynamically scoped
+set (C<$+>, C<$&>, C<$`>, C<$'>, and C<$^N>) are all dynamically scoped
until the end of the enclosing block or until the next successful
match, whichever comes first. (See L<perlsyn/"Compound Statements">.)
always succeeds, and its C<code> is not interpolated. Currently,
the rules to determine where the C<code> ends are somewhat convoluted.
+This feature can be used together with the special variable C<$^N> to
+capture the results of submatches in variables without having to keep
+track of the number of nested parentheses. For example:
+
+ $_ = "The brown fox jumps over the lazy dog";
+ /the (\S+)(?{ $color = $^N }) (\S+)(?{ $animal = $^N })/i;
+ print "color = $color, animal = $animal\n";
+
The C<code> is properly scoped in the following sense: If the assertion
is backtracked (compare L<"Backtracking">), all changes introduced after
C<local>ization are undone, so that
one-liners (see B<-e> below).
On some systems, you may have to change single-quotes to double ones,
-which you must I<not> do on Unix or Plan9 systems. You might also
+which you must I<not> do on Unix or Plan 9 systems. You might also
have to change a single % to a %%.
For example:
=item Basic Thread Support
+=item A Note about the Examples
+
=item Creating Threads
=item Giving up control
=back
-=head2 perlfaq6 - Regular Expressions ($Revision: 1.11 $, $Date: 2002/05/23
-15:47:37 $)
+=head2 perlfaq6 - Regular Expressions ($Revision: 1.12 $, $Date: 2002/06/01
+22:31:09 $)
=over 4
=item Understanding of Numbers
+=item Arrays now always interpolate into double-quoted strings [561]
+
=item Miscellaneous Changes
=back
=item Changed Internals
-=item Security Vulnerability Closed
+=item Security Vulnerability Closed [561]
=item New Tests
=item ext/threads/t/libc
+=item FreeBSD built with ithreads coredumps reading large directories
+
=item FreeBSD Failing locale Test 117 For ISO8859-15 Locales
+=item IRIX fails ext/List/Util/t/shuffle.t
+
=item Modifying $_ Inside for(..)
=item mod_perl 1.26 Doesn't Build With Threaded Perl
=item Solaris 2.5
-=item Stratus VOS
+=item SUPER-UX (NEC SX)
=item Term::ReadKey not working on Win32
=item Failure of Thread (5.005-style) tests
+=item Timing problems
+
=item UNICOS
=item UNICOS/mk
=item UTS
+=item VOS (Stratus)
+
=item VMS
=item Win32
=back
+=head2 perlfreebsd, README.freebsd - Perl version 5 on FreeBSD systems
+
+=over 4
+
+=item DESCRIPTION
+
+=over 4
+
+=item FreeBSD core dumps from readdir_r with ithreads
+
+=item $^X doesn't always contain a full path in FreeBSD
+
+=item Perl will no more be part of "base FreeBSD"
+
+=back
+
+=item AUTHOR
+
+=back
+
=head2 perlhpux, README.hpux - Perl version 5 on Hewlett-Packard Unix
(HP-UX) systems
=back
+=head2 perlirix, README.irix - Perl version 5 on Irix systems
+
+=over 4
+
+=item DESCRIPTION
+
+=over 4
+
+=item Building 32-bit Perl in Irix
+
+=item Building 64-bit Perl in Irix
+
+=item About Compiler Versions of Irix
+
+=item Linker Problems in Irix
+
+=item Malloc in Irix
+
+=item Building with threads
+
+=back
+
+=item AUTHOR
+
+=back
+
=head2 perlmachten, README.machten - Perl version 5 on Power MachTen
systems
Environment Variables, File Globbing, Using perl from the command line,
Building Extensions, Command-line Wildcard Expansion, Win32 Specific
-Extensions, Notes on 64-bit Windows, Running Perl Scripts, Miscellaneous
-Things
+Extensions, Notes on 64-bit Windows
+
+=item Running Perl Scripts
+
+Miscellaneous Things
=back
C<getpwnam_r_proto>, C<getpwuid_r_proto>, C<getservbyname_r_proto>,
C<getservbyport_r_proto>, C<getservent_r_proto>, C<getspnam_r_proto>,
C<gidformat>, C<gidsign>, C<gidsize>, C<gidtype>, C<glibpth>, C<gmake>,
-C<gmtime_r_proto>, C<grep>, C<groupcat>, C<groupstype>, C<gzip>
+C<gmtime_r_proto>, C<gnulibc_version>, C<grep>, C<groupcat>, C<groupstype>,
+C<gzip>
=item h
=item p
C<package>, C<pager>, C<passcat>, C<patchlevel>, C<path_sep>, C<perl5>,
-C<perl>, C<perl_patchlevel>
+C<perl5>, C<perl>, C<perl_patchlevel>
=item P
=item y
-C<yacc>, C<yaccflags>
+C<yaccflags>
=item z
=item as_number()
-=item bfac()/blog()
+=item bfac()
+
+=item blog()
=item bround()/round()/bfround()
=item BUGS
-perl -Mbigrat -le 'print 1 + 2/3'
-
=item LICENSE
=item SEE ALSO
=back
-=head2 Thread - manipulate threads in Perl
+=head2 Thread - manipulate threads in Perl (for old code only)
=over 4
=back
-=head2 Thread::Queue - thread-safe queues
+=head2 Thread::Queue - thread-safe queues (for old code only)
=over 4
+=item CAVEAT
+
=item SYNOPSIS
=item DESCRIPTION
=back
-=head2 Thread::Semaphore - thread-safe semaphores
+=head2 Thread::Semaphore - thread-safe semaphores (for old code only)
=over 4
+=item CAVEAT
+
=item SYNOPSIS
=item DESCRIPTION
Win32::FsType(), Win32::FreeLibrary(HANDLE), Win32::GetArchName(),
Win32::GetChipName(), Win32::GetCwd(), Win32::GetFullPathName(FILENAME),
Win32::GetLastError(), Win32::GetLongPathName(PATHNAME),
-Win32::GetNextAvailDrive(), Win32::GetOSVersion(),
+Win32::GetNextAvailDrive(), Win32::GetOSVersion(), Win32::GetOSName(),
Win32::GetShortPathName(PATHNAME), Win32::GetProcAddress(INSTANCE,
PROCNAME), Win32::GetTickCount(), Win32::InitiateSystemShutdown,
Win32::IsWinNT(), Win32::IsWin95(), Win32::LoadLibrary(LIBNAME),
s/^\&\&// && do { $new .= " &&"; next;}; # handle && operator
s/^\&([\(a-z\)]+)/$1/i; # hack for things that take the address of
s/^(\s+)// && do {$new .= ' '; next;};
- s/^(0X[0-9A-F]+)[UL]*//i && do {$new .= lc($1); next;};
+ s/^0X([0-9A-F]+)[UL]*//i
+ && do {my $hex = $1;
+ $hex =~ s/^0+//;
+ if (length $hex > 8 && !$Config{use64bitint}) {
+ # Croak if nv_preserves_uv_bits < 64 ?
+ $new .= hex(substr($hex, -8)) +
+ 2**32 * hex(substr($hex, 0, -8));
+ # The above will produce "errorneus" code
+ # if the hex constant was e.g. inside UINT64_C
+ # macro, but then again, h2ph is an approximation.
+ } else {
+ $new .= lc("0x$hex");
+ }
+ next;};
s/^(-?\d+\.\d+E[-+]?\d+)[FL]?//i && do {$new .= $1; next;};
s/^(\d+)\s*[LU]*//i && do {$new .= $1; next;};
s/^("(\\"|[^"])*")// && do {$new .= $1; next;};
}
next READ;
}
- if ($in =~ /^extern inline / &&
+ if ($in =~ /^extern inline / && # Inlined assembler.
$^O eq 'linux' && $file =~ m!(?:^|/)asm/[^/]+\.h$!) {
while (<IN>) {
last if /^}/;
$needed_there++;
}
else {
- print "# Needed module `$_' does not appear to be properly installed ($@).\n";
+ print "# Needed module `$_' does not appear to be properly installed.\n";
}
$@ = undef;
}
$extensions_there++;
}
else {
- print "# Required module `$_' does not appear to be properly installed ($@).\n";
+ print "# Required module `$_' does not appear to be properly installed.\n";
$@ = undef;
}
$extensions_total++;
$ph_there++;
}
else {
- print "# Perl header `$_' does not appear to be properly installed ($@).\n";
+ print "# Perl header `$_' does not appear to be properly installed.\n";
}
$@ = undef;
}
copy ..\README.dgux .\perldgux.pod
copy ..\README.dos .\perldos.pod
copy ..\README.epoc .\perlepoc.pod
+ copy ..\README.freebsd .\perlfreebsd.pod
copy ..\README.hurd .\perlhurd.pod
copy ..\README.hpux .\perlhpux.pod
+ copy ..\README.irix .\perlirix.pod
copy ..\README.machten .\perlmachten.pod
copy ..\README.macos .\perlmacos.pod
copy ..\README.mint .\perlmint.pod
-del /f *.html *.bat checkpods \
perlaix.pod perlamiga.pod perlapollo.pod perlbeos.pod \
perlbs2000.pod perlce.pod perlcygwin.pod perldgux.pod \
- perldos.pod perlepoc.pod perlhurd.pod \
- perlhpux.pod perlmachten.pod \
+ perldos.pod perlepoc.pod perlfreebsd.pod perlhurd.pod \
+ perlhpux.pod perlirix.pod perlmachten.pod \
perlmacos.pod perlmint.pod perlmpeix.pod perlnetware.pod \
perlos2.pod perlos390.pod perlplan9.pod perlqnx.pod \
perlsolaris.pod perltru64.pod perluts.pod \
copy ..\README.dgux ..\pod\perldgux.pod
copy ..\README.dos ..\pod\perldos.pod
copy ..\README.epoc ..\pod\perlepoc.pod
+ copy ..\README.freebsd ..\pod\perlfreebsd.pod
copy ..\README.hpux ..\pod\perlhpux.pod
copy ..\README.hurd ..\pod\perlhurd.pod
+ copy ..\README.irix ..\pod\perlirix.pod
copy ..\README.machten ..\pod\perlmachten.pod
copy ..\README.macos ..\pod\perlmacos.pod
copy ..\README.mint ..\pod\perlmint.pod
-cd $(PODDIR) && del /f *.html *.bat checkpods \
perlaix.pod perlamiga.pod perlapollo.pod \
perlbeos.pod perlbs2000.pod perlce.pod perlcygwin.pod perldgux.pod \
- perldos.pod perlepoc.pod perlhpux.pod perlhurd.pod \
- perlmachten.pod perlmint.pod \
+ perldos.pod perlepoc.pod perlfreebsd.pod perlhpux.pod perlhurd.pod \
+ perlirix.pod perlmachten.pod perlmint.pod \
perlmacos.pod perlmpeix.pod perlnetware.pod \
perlos2.pod perlos390.pod \
perlplan9.pod perlqnx.pod \