64-bitness hints tweaks
[p5sagit/p5-mst-13.2.git] / Changes
diff --git a/Changes b/Changes
index 0f0cf73..a3fa1f4 100644 (file)
--- a/Changes
+++ b/Changes
@@ -95,6 +95,519 @@ Version v5.6.0
 --------------
 
 ____________________________________________________________________________
+[  5676] By: gsar                                  on 2000/03/12  11:27:38
+        Log: don't bother testing if we can flush all handles when fflush(stdin)
+             shows the pipe bug
+     Branch: perl
+          ! Configure
+____________________________________________________________________________
+[  5675] By: jhi                                   on 2000/03/12  05:08:29
+        Log: continue flogging the string->int conversion ifdefs
+     Branch: cfgperl
+          ! perl.h
+____________________________________________________________________________
+[  5674] By: gsar                                  on 2000/03/12  05:01:30
+        Log: fix File::DosGlob for patterns with drive names like c:*.bat
+             (suggested by Jason Mathews <mathews@computer.org>)
+     Branch: perl
+          ! lib/File/DosGlob.pm
+____________________________________________________________________________
+[  5673] By: jhi                                   on 2000/03/12  04:48:14
+        Log: Integrate with Sarathy.
+     Branch: cfgperl
+         !> doop.c perl.h pod/perldelta.pod pod/perldiag.pod
+         !> pod/perlpod.pod toke.c utils/perldoc.PL
+____________________________________________________________________________
+[  5672] By: gsar                                  on 2000/03/12  03:57:23
+        Log: security fixes for perldoc (from Tom Christiansen)
+     Branch: perl
+          ! utils/perldoc.PL
+____________________________________________________________________________
+[  5671] By: gsar                                  on 2000/03/12  03:45:27
+        Log: Larry's patch to disallow CORE::Snark, with perldiag entry
+     Branch: perl
+          ! pod/perldelta.pod pod/perldiag.pod toke.c
+____________________________________________________________________________
+[  5670] By: gsar                                  on 2000/03/12  03:36:17
+        Log: insufficient buffer in change#5317
+     Branch: perl
+          ! doop.c
+____________________________________________________________________________
+[  5669] By: gsar                                  on 2000/03/12  03:15:29
+        Log: avoid L<foo|bar> for now, not all the pod2foo support it
+     Branch: perl
+          ! pod/perlpod.pod
+____________________________________________________________________________
+[  5668] By: gsar                                  on 2000/03/12  02:35:55
+        Log: rework change#5664
+     Branch: perl
+          ! perl.h
+____________________________________________________________________________
+[  5667] By: jhi                                   on 2000/03/11  21:35:29
+        Log: todo and perldelta updates
+     Branch: cfgperl
+          ! Todo Todo-5.6 pod/perldelta.pod
+____________________________________________________________________________
+[  5666] By: jhi                                   on 2000/03/11  21:00:34
+        Log: Integrate with Sarathy.
+     Branch: cfgperl
+         !> perl.h
+____________________________________________________________________________
+[  5665] By: jhi                                   on 2000/03/11  20:58:58
+        Log: Fixes for #5661.
+     Branch: cfgperl
+          ! perl.h
+____________________________________________________________________________
+[  5664] By: gsar                                  on 2000/03/11  19:50:06
+        Log: fix Strtoul() misdefinition is change#5661
+     Branch: perl
+          ! perl.h
+____________________________________________________________________________
+[  5663] By: gsar                                  on 2000/03/11  19:21:18
+        Log: integrate cfgperl contents into mainline
+     Branch: perl
+         !> Configure config_h.SH hints/solaris_2.sh perl.h
+         !> t/pragma/warn/pp_hot toke.c
+____________________________________________________________________________
+[  5662] By: jhi                                   on 2000/03/11  19:06:20
+        Log: Integrate with Sarathy.
+     Branch: cfgperl
+         !> cop.h perl.c pp_ctl.c t/op/eval.t t/op/misc.t
+____________________________________________________________________________
+[  5661] By: jhi                                   on 2000/03/11  19:03:32
+        Log: Use Atof() instead of bare strtod(); ditto for Atol()/Atoul()
+             (introduce the latter) instead of bare strtoll()/strtoll().
+     Branch: cfgperl
+          ! perl.h toke.c
+____________________________________________________________________________
+[  5660] By: gsar                                  on 2000/03/11  18:40:49
+        Log: another long-standing eval bug: return doesn't reset $@ correctly
+     Branch: perl
+          ! pp_ctl.c t/op/eval.t
+____________________________________________________________________________
+[  5659] By: jhi                                   on 2000/03/11  18:27:54
+        Log: metaconfig-ify the test for broken fflush(NULL)
+             (which ails e.g. Solaris), from Ulrich Pfeifer.
+     Branch: cfgperl
+          ! Configure config_h.SH hints/solaris_2.sh
+     Branch: metaconfig/U/perl
+          ! d_unorderedl.U fflushall.U
+____________________________________________________________________________
+[  5658] By: gsar                                  on 2000/03/11  18:11:22
+        Log: change#3511 was not defensive enough about try blocks, causing
+             bogus attempts to free closures, and thence, segfaults
+     Branch: perl
+          ! cop.h perl.c pp_ctl.c t/op/misc.t
+____________________________________________________________________________
+[  5657] By: jhi                                   on 2000/03/11  18:04:44
+        Log: Rewording.
+     Branch: cfgperl
+          ! t/pragma/warn/pp_hot
+____________________________________________________________________________
+[  5656] By: jhi                                   on 2000/03/11  17:41:29
+        Log: Integrate with Sarathy.
+     Branch: cfgperl
+         !> (integrate 27 files)
+____________________________________________________________________________
+[  5655] By: gsar                                  on 2000/03/11  17:06:03
+        Log: reword comment
+     Branch: perl
+          ! t/pragma/warn/pp_hot
+____________________________________________________________________________
+[  5654] By: gsar                                  on 2000/03/11  17:01:47
+        Log: off-by-one in os2.c (from Ilya Zakharevich)
+     Branch: perl
+          ! os2/os2.c
+____________________________________________________________________________
+[  5653] By: gsar                                  on 2000/03/11  16:59:48
+        Log: File::Spec::VMS fixups, *not tested* on VMS (from Barrie Slaymaker)
+     Branch: perl
+          ! lib/File/Spec/VMS.pm t/lib/filespec.t
+____________________________________________________________________________
+[  5652] By: gsar                                  on 2000/03/11  16:52:03
+        Log: missing export list entry in change#5619
+     Branch: perl
+          ! makedef.pl
+____________________________________________________________________________
+[  5651] By: gsar                                  on 2000/03/11  16:50:05
+        Log: avoid using context pointer in MUTEX_INIT() et al; remove the
+             *_NOCONTEXT variants to keep it simple
+     Branch: perl
+          ! malloc.c thread.h win32/win32thread.h
+____________________________________________________________________________
+[  5650] By: gsar                                  on 2000/03/11  16:07:35
+        Log: remove =for section (from Johan Vromans)
+     Branch: perl
+          ! lib/Getopt/Long.pm
+____________________________________________________________________________
+[  5649] By: gsar                                  on 2000/03/11  16:05:50
+        Log: add nokfile target in Makefile (from Andy Dougherty)
+     Branch: perl
+          ! Makefile.SH
+____________________________________________________________________________
+[  5648] By: gsar                                  on 2000/03/11  16:02:53
+        Log: mention podchecker (from Tim Jenness <timj@jach.hawaii.edu>)
+     Branch: perl
+          ! pod/perlpod.pod
+____________________________________________________________________________
+[  5647] By: gsar                                  on 2000/03/11  16:01:03
+        Log: VMS build tweaks (from Charles Bailey)
+     Branch: perl
+          ! configure.com perl.c t/pragma/warn/doio t/pragma/warn/util
+          ! vms/subconfigure.com
+____________________________________________________________________________
+[  5646] By: gsar                                  on 2000/03/11  10:13:27
+        Log: remove outdated ftp.cis.ufl.edu reference
+     Branch: perl
+          ! pod/perlfaq2.pod
+____________________________________________________________________________
+[  5645] By: gsar                                  on 2000/03/11  10:10:39
+        Log: failed hunk in change#5644
+     Branch: perl
+          ! t/op/pat.t
+____________________________________________________________________________
+[  5644] By: gsar                                  on 2000/03/11  10:08:47
+        Log: fix optimizer bug in /^(?p{"a"})b/ (from Ilya Zakharevich)
+     Branch: perl
+          ! regcomp.c t/op/pat.t
+____________________________________________________________________________
+[  5643] By: gsar                                  on 2000/03/11  09:48:30
+        Log: better {local,gm}time documentation (from Mark-Jason Dominus)
+     Branch: perl
+          ! pod/perlfunc.pod
+____________________________________________________________________________
+[  5642] By: gsar                                  on 2000/03/11  09:45:10
+        Log: tweaks for lynxos build (from Ed Mooring <mooring@lynx.com>)
+     Branch: perl
+          ! doio.c hints/lynxos.sh perl.h
+____________________________________________________________________________
+[  5641] By: gsar                                  on 2000/03/11  09:42:56
+        Log: integrate cfgperl contents into mainline
+     Branch: perl
+         !> Configure Todo-5.6 config_h.SH hints/irix_6.sh
+         !> lib/Math/Complex.pm regcomp.c t/op/64bit.t
+____________________________________________________________________________
+[  5640] By: gsar                                  on 2000/03/11  09:24:30
+        Log: perldelta update, typos and whitespace adjustments
+     Branch: perl
+          ! lib/open.pm miniperlmain.c pod/perldelta.pod win32/perllib.c
+____________________________________________________________________________
+[  5639] By: jhi                                   on 2000/03/11  00:51:48
+        Log: Integrate with Sarathy.
+     Branch: cfgperl
+         !> (integrate 44 files)
+____________________________________________________________________________
+[  5638] By: jhi                                   on 2000/03/11  00:45:46
+        Log: Cpp out deadcode that IRIX compiler noticed. 
+     Branch: cfgperl
+          ! regcomp.c
+____________________________________________________________________________
+[  5637] By: jhi                                   on 2000/03/10  14:22:24
+        Log: Do not use Perl's malloc in IRIX.
+     Branch: cfgperl
+          ! hints/irix_6.sh
+____________________________________________________________________________
+[  5636] By: jhi                                   on 2000/03/10  05:27:03
+        Log: More/modified unused floating point units.
+     Branch: metaconfig/U/perl
+          + d_fp_class_l.U d_unordered.U d_unorderedl.U
+          ! d_fpclass.U
+____________________________________________________________________________
+[  5635] By: jhi                                   on 2000/03/10  01:54:07
+        Log: Add various yet-unused units.
+     Branch: metaconfig/U/perl
+          + d_class.U d_fchdir.U d_finite.U d_fp_class.U d_fp_classl.U
+          + d_fpclass.U d_fpclassify.U d_frexpl.U d_futimes.U
+          + d_getitimer.U d_getrlimit.U d_iconv.U d_isfinite.U d_isinf.U
+          + d_isnan.U d_isnanl.U d_lchmod.U d_lutimes.U d_setitimer.U
+          + d_setrlimit.U d_ualarm.U d_utimes.U
+____________________________________________________________________________
+[  5634] By: jhi                                   on 2000/03/10  01:07:54
+        Log: Fix goofups noticed by Mark Bixby and Jeff Okamoto.
+     Branch: cfgperl
+          ! Configure config_h.SH
+     Branch: metaconfig
+          ! U/compline/nblock_io.U
+     Branch: metaconfig/U/perl
+          ! use64bits.U
+____________________________________________________________________________
+[  5633] By: jhi                                   on 2000/03/09  23:22:33
+        Log: Remove an obsolete note.
+     Branch: cfgperl
+          ! t/op/64bit.t
+____________________________________________________________________________
+[  5632] By: gsar                                  on 2000/03/09  18:50:43
+        Log: update Changes
+     Branch: perl
+          ! Changes
+____________________________________________________________________________
+[  5631] By: gsar                                  on 2000/03/09  18:49:12
+        Log: track more of the child state on Windows
+     Branch: perl
+          ! win32/win32.c win32/win32.h
+____________________________________________________________________________
+[  5630] By: gsar                                  on 2000/03/09  18:48:05
+        Log: UNIVERSAL::isa() and UNIVERSAL::can() fail for magic values
+     Branch: perl
+          ! universal.c
+____________________________________________________________________________
+[  5629] By: gsar                                  on 2000/03/09  18:37:35
+        Log: tweak Unicode notes, other cleanups
+     Branch: perl
+          ! Changes lib/bytes.pm lib/utf8.pm pod/perldelta.pod
+          ! pod/perlhist.pod pod/perlunicode.pod
+____________________________________________________________________________
+[  5628] By: gsar                                  on 2000/03/09  17:39:58
+        Log: support binmode(F,":crlf") and use open IN => ":raw", OUT => ":crlf"
+             semantics; the pragma sets defaults for both open() and qx//
+     Branch: perl
+          ! doio.c dosish.h embed.h embed.pl epoc/epocish.h lib/open.pm
+          ! mpeix/mpeixish.h op.c op.h opcode.h opcode.pl os2/os2ish.h
+          ! perl.h perlapi.c plan9/plan9ish.h pod/perlfunc.pod pp.sym
+          ! pp_proto.h pp_sys.c proto.h sv.h vms/vmsish.h vos/vosish.h
+____________________________________________________________________________
+[  5627] By: gsar                                  on 2000/03/09  12:54:08
+        Log: avoid autoflushing behavior of fork/system/exec on Solaris (thanks
+             to fflush(NULL) bug)
+     Branch: perl
+          ! hints/solaris_2.sh pod/perldelta.pod
+____________________________________________________________________________
+[  5626] By: gsar                                  on 2000/03/09  11:34:51
+        Log: abort build on HP-UX if bundled non-ANSI compiler is detected
+             (from Dominic Dunlop <domo@computer.org>)
+     Branch: perl
+          ! hints/hpux.sh
+____________________________________________________________________________
+[  5625] By: gsar                                  on 2000/03/09  11:17:07
+        Log: patch from Larry to make -T filetest algorithm recognize utf8 as
+             "text"
+     Branch: perl
+          ! pp_sys.c
+____________________________________________________________________________
+[  5624] By: gsar                                  on 2000/03/09  11:11:59
+        Log: provide support for deleting actions etc. (from Ronald J Kimball
+             <rjk@linguist.dartmouth.edu>)
+     Branch: perl
+          ! lib/perl5db.pl pod/perldebug.pod
+____________________________________________________________________________
+[  5623] By: gsar                                  on 2000/03/09  06:39:21
+        Log: new xsubpp keywords should be in all caps
+     Branch: perl
+          ! lib/ExtUtils/xsubpp
+____________________________________________________________________________
+[  5622] By: gsar                                  on 2000/03/09  06:26:04
+        Log: demand-load utf8.pm in swash routines
+     Branch: perl
+          ! op.c utf8.c
+____________________________________________________________________________
+[  5621] By: gsar                                  on 2000/03/08  19:27:02
+        Log: make Dump() call the XSUB implementation transparently (modified
+             version of patch suggested by David Boyce <dsb@world.std.com>)
+     Branch: perl
+          ! ext/Data/Dumper/Dumper.pm ext/Data/Dumper/Dumper.xs
+          ! pod/perldelta.pod
+____________________________________________________________________________
+[  5620] By: gsar                                  on 2000/03/08  18:35:48
+        Log: do FILE should not see outside lexicals (from Rick Delaney
+             <rick@consumercontact.com>)
+     Branch: perl
+          ! op.c pp_ctl.c t/comp/require.t
+____________________________________________________________________________
+[  5619] By: gsar                                  on 2000/03/08  18:04:45
+        Log: abstract code for C<use Foo 1.23 @ary;> into a Perl_load_module()
+             API function
+     Branch: perl
+          ! doio.c embed.h embed.pl global.sym objXSUB.h op.c op.h
+          ! perlapi.c pp_sys.c proto.h
+____________________________________________________________________________
+[  5618] By: jhi                                   on 2000/03/08  18:03:30
+        Log: Integrate with Sarathy.
+     Branch: cfgperl
+         +> lib/Pod/Plainer.pm
+         !> Changes MANIFEST dosish.h embedvar.h lib/Pod/InputObjects.pm
+         !> lib/Pod/Parser.pm makedef.pl op.c op.h perl.c perlapi.h
+         !> perlvars.h pod/perlop.pod pod/pod2latex.PL sv.c unixish.h
+         !> vms/vmsish.h
+____________________________________________________________________________
+[  5617] By: jhi                                   on 2000/03/08  15:44:05
+        Log: ICU todo fixes.
+     Branch: cfgperl
+          ! Todo-5.6
+____________________________________________________________________________
+[  5616] By: jhi                                   on 2000/03/08  14:30:40
+        Log: Even more Todo.
+     Branch: cfgperl
+          ! Todo-5.6
+____________________________________________________________________________
+[  5615] By: jhi                                   on 2000/03/08  14:13:45
+        Log: More Todo.
+     Branch: cfgperl
+          ! Todo-5.6
+____________________________________________________________________________
+[  5614] By: jhi                                   on 2000/03/08  13:50:53
+        Log: wording changes
+     Branch: cfgperl
+          ! lib/Math/Complex.pm
+____________________________________________________________________________
+[  5613] By: gsar                                  on 2000/03/08  12:51:35
+        Log: clarify docs on return value from binding operators
+     Branch: perl
+          ! pod/perlop.pod
+____________________________________________________________________________
+[  5612] By: gsar                                  on 2000/03/08  12:41:38
+        Log: shore up pod2latex shortcomings, and a Pod::Parser fix (from
+             Robin Barker)
+     Branch: perl
+          + lib/Pod/Plainer.pm
+          ! MANIFEST lib/Pod/Parser.pm pod/pod2latex.PL
+____________________________________________________________________________
+[  5611] By: gsar                                  on 2000/03/08  12:22:59
+        Log: integrate cfgperl changes into mainline
+     Branch: perl
+          ! Changes
+         !> installperl lib/Math/Complex.pm pod/perldelta.pod
+         !> t/lib/complex.t vms/vmsish.h
+____________________________________________________________________________
+[  5610] By: gsar                                  on 2000/03/08  12:08:17
+        Log: add missing locks for op refcounts
+     Branch: perl
+          ! dosish.h embedvar.h makedef.pl op.c op.h perl.c perlapi.h
+          ! perlvars.h sv.c unixish.h vms/vmsish.h
+____________________________________________________________________________
+[  5609] By: gsar                                  on 2000/03/08  11:30:32
+        Log: Pod::InputObjects tweak (from Brad Appleton)
+     Branch: perl
+          ! lib/Pod/InputObjects.pm
+____________________________________________________________________________
+[  5608] By: jhi                                   on 2000/03/08  05:08:59
+        Log: Integrate with Sarathy.
+     Branch: cfgperl
+         !> (integrate 27 files)
+____________________________________________________________________________
+[  5607] By: jhi                                   on 2000/03/08  05:07:06
+        Log: Make the stringification more customizable.
+             A potentially backward incompatible change.
+             Based on a suggestion by Roman Kosenko <ra@amk.al.lg.ua>.
+     Branch: cfgperl
+          ! lib/Math/Complex.pm pod/perldelta.pod t/lib/complex.t
+____________________________________________________________________________
+[  5606] By: jhi                                   on 2000/03/08  00:49:14
+        Log: s/lfs/largefiles/
+     Branch: metaconfig
+          ! U/mksample
+____________________________________________________________________________
+[  5605] By: gsar                                  on 2000/03/07  23:37:48
+        Log: VMS build patch (from Peter Prymmer)
+     Branch: perl
+          ! configure.com installhtml lib/lib.pm vms/descrip_mms.template
+          ! vms/subconfigure.com vms/vms.c
+____________________________________________________________________________
+[  5604] By: gsar                                  on 2000/03/07  23:25:46
+        Log: CopFILEGV(&PL_compiling) must be reset properly (from Doug MacEachern)
+     Branch: perl
+          ! perl.c
+____________________________________________________________________________
+[  5603] By: gsar                                  on 2000/03/07  23:05:16
+        Log: type mismatch
+     Branch: perl
+          ! sv.c
+____________________________________________________________________________
+[  5602] By: gsar                                  on 2000/03/07  22:40:55
+        Log: add note to INSTALL about C++ compilers (from M J T Guy)
+     Branch: perl
+          ! INSTALL
+____________________________________________________________________________
+[  5601] By: gsar                                  on 2000/03/07  22:30:35
+        Log: separate options to incpush() for adding version directories and
+             architecture directories (from Andy Dougherty)
+     Branch: perl
+          ! embed.h embed.pl perl.c proto.h t/lib/fatal.t
+____________________________________________________________________________
+[  5600] By: gsar                                  on 2000/03/07  20:18:54
+        Log: support :void to enable croaking only in void context (from
+             Simon Cozens <simon@othersideofthe.earth.li>)
+     Branch: perl
+          ! lib/Fatal.pm t/lib/fatal.t
+____________________________________________________________________________
+[  5599] By: gsar                                  on 2000/03/07  18:35:21
+        Log: Pod::Html tweak to avoid false falses
+     Branch: perl
+          ! lib/Pod/Html.pm
+____________________________________________________________________________
+[  5598] By: gsar                                  on 2000/03/07  18:21:58
+        Log: skip null siblings encountered by goto out of loopish block
+             (from Doug Lankshear)
+     Branch: perl
+          ! pp_ctl.c
+____________________________________________________________________________
+[  5597] By: gsar                                  on 2000/03/07  16:33:29
+        Log: omit XSLoader from bytecode dumps
+     Branch: perl
+          ! ext/B/B/Bytecode.pm ext/B/B/Stash.pm ext/B/B/Xref.pm
+____________________________________________________________________________
+[  5596] By: gsar                                  on 2000/03/07  10:58:17
+        Log: avoid coredump on C<printf "%vd">
+     Branch: perl
+          ! sv.c
+____________________________________________________________________________
+[  5595] By: gsar                                  on 2000/03/07  10:26:03
+        Log: add missing HTML escapes that can be displayed in xterm (from
+             Tim Jenness <timj@jach.hawaii.edu>)
+     Branch: perl
+          ! lib/Pod/Text.pm
+____________________________________________________________________________
+[  5594] By: gsar                                  on 2000/03/07  10:24:55
+        Log: Fatal.pm pod tweak (from Matt Sergeant <matt@sergeant.org>)
+     Branch: perl
+          ! lib/Fatal.pm
+____________________________________________________________________________
+[  5593] By: gsar                                  on 2000/03/07  09:57:24
+        Log: get ByteLoader working again
+     Branch: perl
+          ! bytecode.pl ext/B/B/Asmdata.pm ext/B/B/Bytecode.pm
+          ! ext/B/B/C.pm ext/ByteLoader/bytecode.h
+          ! ext/ByteLoader/byterun.c
+____________________________________________________________________________
+[  5592] By: gsar                                  on 2000/03/07  05:14:49
+        Log: typo in makedef.pl
+     Branch: perl
+          ! lib/File/Path.pm makedef.pl
+____________________________________________________________________________
+[  5591] By: jhi                                   on 2000/03/06  22:56:24
+        Log: Integrate with Sarathy.
+     Branch: cfgperl
+         !> Changes ext/File/Glob/Glob.xs lib/Pod/Html.pm
+____________________________________________________________________________
+[  5590] By: gsar                                  on 2000/03/06  22:32:44
+        Log: fix incorrect prototypes in File::Glob
+     Branch: perl
+          ! ext/File/Glob/Glob.xs
+____________________________________________________________________________
+[  5589] By: gsar                                  on 2000/03/06  22:07:38
+        Log: update Changes
+     Branch: perl
+          ! Changes
+____________________________________________________________________________
+[  5588] By: jhi                                   on 2000/03/06  21:46:18
+        Log: From: "Craig A. Berry" <craig.berry@metamorgs.com>
+             To: vmsperl@perl.org, perl5-porters@perl.org
+             Cc: jhi@iki.fi, Charles Bailey <BAILEY@newman.upenn.edu>, gsar@activestate.com
+             Subject: [PATCH 5.5.670] circumvent VMS fileno bug in old DEC C version
+             Date: Mon, 06 Mar 2000 15:36:13 -0600
+             Message-Id: <4.2.2.20000306153539.00ca6420@exchi01.midwest.metamorgs.com>
+     Branch: cfgperl
+          ! vms/vmsish.h
+____________________________________________________________________________
+[  5587] By: jhi                                   on 2000/03/06  21:23:27
+        Log: Use $^O.
+     Branch: cfgperl
+          ! installperl
+____________________________________________________________________________
+[  5586] By: jhi                                   on 2000/03/06  21:19:15
+        Log: Undo drift from the mainline.
+     Branch: cfgperl
+         !> (integrate 1607 files)
+____________________________________________________________________________
 [  5585] By: gsar                                  on 2000/03/06  20:23:37
         Log: change#5513 accidentally undid change#5373, put it back
      Branch: perl