5 Nearly all the changes for 5.001 were bug fixes of one variety or another,
6 so here's the bug list, along with the "resolution" for each of them. If
7 you wish to correspond about any of them, please include the bug number.
9 Added APPLLIB_EXP for embedded perl library support.
12 Couldn't define autoloaded routine by assignment to typeglob.
13 Files patched: pp_hot.c sv.c
15 NETaa13399: Andy patches.
17 Files patched: MANIFEST
19 NETaa13399: Andy's patch 1m
20 Files patched: Configure MANIFEST Makefile.SH embed.h embed.pl
21 ext/GDBM_File/GDBM_File.xs global.sym hints/freebsd.sh installman
22 installperl interp.sym keywords.h keywords.pl lib/Exporter.pm
23 lib/ExtUtils/MakeMaker.pm lib/ExtUtils/xsubpp op.c perl.c perl.h perldoc.SH
24 pod/perl.pod pod/pod2html.SH pp.c pp_ctl.c pp_ctl.c pp_hot.c proto.h
25 regcomp.c regcomp.h regexec.c toke.c x2p/util.c x2p/util.h
27 NETaa13399: Andy's patch.1l
28 Files patched: Changes.Conf Configure Makefile.SH README README.vms c2ph.SH
29 config_H config_h.SH configpm configure doio.c embed.h
30 ext/DB_File/DB_File.pm ext/DB_File/DB_File.xs ext/DynaLoader/DynaLoader.pm
31 ext/DynaLoader/Makefile.PL ext/DynaLoader/README ext/DynaLoader/dl_dlopen.xs
32 ext/Fcntl/Fcntl.pm ext/Fcntl/Fcntl.xs ext/GDBM_File/GDBM_File.pm
33 ext/GDBM_File/GDBM_File.xs ext/NDBM_File/hints/solaris.pl
34 ext/ODBM_File/Makefile.PL ext/ODBM_File/hints/sco.pl
35 ext/ODBM_File/hints/solaris.pl ext/ODBM_File/hints/svr4.pl
36 ext/POSIX/POSIX.pm ext/POSIX/POSIX.xs ext/SDBM_File/sdbm/sdbm.c
37 ext/Socket/Socket.pm global.sym h2ph.SH h2xs.SH handy.h hints/README.hints
38 hints/apollo.sh hints/aux.sh hints/cxux.sh hints/dynix.sh hints/epix.sh
39 hints/freebsd.sh hints/hpux_9.sh hints/irix_4.sh hints/irix_5.sh
40 hints/irix_6.sh hints/isc.sh hints/linux.sh hints/netbsd.sh hints/next_3.sh
41 hints/next_3_0.sh hints/powerunix.sh hints/sco_3.sh hints/titanos.sh
42 installman installperl lib/AnyDBM_File.pm lib/AutoLoader.pm lib/AutoSplit.pm
43 lib/Benchmark.pm lib/Carp.pm lib/Cwd.pm lib/English.pm lib/Exporter.pm
44 lib/ExtUtils/Liblist.pm lib/ExtUtils/MakeMaker.pm lib/ExtUtils/Manifest.pm
45 lib/ExtUtils/Mkbootstrap.pm lib/ExtUtils/xsubpp lib/File/Basename.pm
46 lib/File/CheckTree.pm lib/File/Find.pm lib/FileHandle.pm lib/Getopt/Long.pm
47 lib/Getopt/Std.pm lib/I18N/Collate.pm lib/IPC/Open2.pm lib/IPC/Open3.pm
48 lib/Net/Ping.pm lib/Term/Complete.pm lib/Text/Abbrev.pm lib/Text/Tabs.pm
49 lib/ftp.pl lib/getcwd.pl lib/integer.pm lib/less.pm lib/sigtrap.pm
50 lib/strict.pm lib/subs.pm makeaperl.SH makedepend.SH myconfig perl.c perl.h
51 perldoc.SH pod/Makefile pod/perl.pod pod/perlbot.pod pod/perlcall.pod
52 pod/perlfunc.pod pod/perlguts.pod pod/perlop.pod pod/perlre.pod
53 pod/perlxs.pod pod/pod2html.SH pod/pod2latex.SH pod/pod2man.SH pp_ctl.c
54 pp_hot.c pp_sys.c proto.h scope.c sv.c sv.h t/comp/cpp.aux t/comp/cpp.t
55 t/op/misc.t toke.c unixish.h util.c vms/config.vms vms/ext/MM_VMS.pm
56 vms/ext/VMS/stdio/stdio.xs vms/perlvms.pod vms/vms.c x2p/Makefile.SH
57 x2p/find2perl.SH x2p/s2p.SH x2p/str.c
59 NETaa13399: Jumbo Configure patch (and patch 1)
60 Files patched: Changes.Conf
62 NETaa13399: Jumbo Configure patch (and patch 1)
63 Files patched: Configure INSTALL MANIFEST Makefile.SH README config_H
64 config_h.SH configure embed.h ext/Fcntl/Fcntl.xs ext/ODBM_File/ODBM_File.xs
65 h2xs.SH hints/aix.sh hints/hpux_9.sh hints/isc.sh hints/isc_2.sh
66 hints/solaris_2.sh hints/unicos.sh hints/utekv.sh lib/ExtUtils/MakeMaker.pm
67 makedepend.SH t/README x2p/a2p.h
69 NETaa13399: Jumbo Configure patch (patches 2 and 3)
70 Files patched: Configure INSTALL config_h.SH embed.h ext/Fcntl/Fcntl.xs
71 ext/POSIX/POSIX.xs global.sym mg.c perl.h proto.h
73 NETaa13525: doc changes
75 Files patched: pod/perlop.pod pod/perltrap.pod
77 NETaa13525: random cleanup
78 Files patched: Configure MANIFEST Makefile.SH cop.h embed.h global.sym
79 hints/dec_osf.sh hv.c lib/dotsh.pl mg.c op.c op.c op.h perl.c perl.c perly.c
80 perly.c perly.c.diff perly.c.diff perly.h perly.y pod/perl.pod
81 pod/perldiag.pod pod/perlfunc.pod pod/perlfunc.pod pod/perlfunc.pod
82 pod/perlfunc.pod pod/perlop.pod pod/perlre.pod pod/perltrap.pod
83 pod/perlxs.pod pod/perlxs.pod pp_ctl.c pp_ctl.c pp_hot.c pp_sys.c proto.h
84 regcomp.c regexec.c sv.c sv.c sv.c toke.c vms/perly_c.vms vms/perly_h.vms
88 Files patched: EXTERN.h INTERN.h MANIFEST Makefile.SH README.vms av.c embed.h
89 ext/Socket/Socket.pm ext/Socket/Socket.xs global.sym gv.c lib/AutoSplit.pm
90 lib/ExtUtils/MakeMaker.pm lib/ExtUtils/MakeMaker.pm lib/ExtUtils/Manifest.pm
91 lib/ExtUtils/xsubpp lib/File/Find.pm lib/File/Path.pm lib/lib.pm perl.c
92 perl.h pp_ctl.c pp_sys.c proto.h run.c sv.c vms/Makefile vms/Makefile
93 vms/config.vms vms/descrip.mms vms/descrip.mms vms/ext/MM_VMS.pm
94 vms/gen_shrfls.pl vms/perlvms.pod vms/perly_c.vms vms/perly_h.vms
95 vms/sockadapt.c vms/sockadapt.h vms/test.com vms/vms.c vms/vms_yfix.pl
98 NETaa13540: VMS uses CLK_TCK for HZ
99 Files patched: pp_sys.c
101 NETaa13721: pad_findlex core dumps on bad CvOUTSIDE()
103 Files patched: op.c sv.c toke.c
104 Each CV has a reference to the CV containing it lexically. Unfortunately,
105 it didn't reference-count this reference, so when the outer CV was freed,
106 we ended up with a pointer to memory that got reused later as some other kind
109 NETaa13721: warning suppression
110 Files patched: toke.c
113 NETaa13722: walk.c had inconsistent static declarations
115 Files patched: x2p/walk.c
116 Consolidated the various declarations and made them consistent with
117 the actual definitions.
119 NETaa13729: order-of-evaluation dependency in scope.c on leaving REGCONTEXT
121 Files patched: scope.c
124 I32 delta = SSPOPINT;
125 savestack_ix -= delta; /* regexp must have croaked */
129 NETaa13731: couldn't assign external lexical array to itself
130 From: oneill@cs.sfu.ca
132 The pad_findmy routine was only checking previous statements for previous
133 mention of external lexicals, so the fact that the current statement
134 already mentioned @list was not noted. It therefore allocated another
135 reference to the outside lexical, and this didn't compare equal when
136 the assigment parsing code was trying to determine whether there was a
137 common variable on either side of the equals. Since it didn't see the
138 same variable, it thought it could avoid making copies of the values on
139 the stack during list assignment. Unfortunately, before using those
140 values, the list assignment has to zero out the target array, which
143 The fix was to make pad_findmy search the current statement as well. This
144 was actually a holdover from some old code that was trying to delay
145 introduction of "my" variables until the next statement. This is now
146 done with a different mechanism, so the fix should not adversely affect
149 NETaa13733: s/// doesn't free old string when using copy mode
151 Files patched: pp_ctl.c pp_hot.c
152 When I removed the use of sv_replace(), I simply forgot to free the old char*.
154 NETaa13736: closures leaked memory
156 Files patched: op.c pp.c
157 This is a specific example of a more general bug, fixed as NETaa13760, having
158 to do with reference counts on comppads.
160 NETaa13739: XSUB interface caches gimme in case XSUB clobbers it
162 Files patched: pp_hot.c
163 Applied suggest patch. Also deleted second gimme declaration as redundant.
165 NETaa13760: comppad reference counts were inconsistent
167 Files patched: op.c perl.c pp_ctl.c toke.c
168 All official references to comppads are supposed to be through compcv now,
169 but the transformation was not complete, resulting in memory leakage.
171 NETaa13761: sv_2pv() wrongly preferred IV to NV when SV was readonly
172 From: "Jack R. Lawler"
174 Okay, I understand how this one happened. This is a case where a
175 beneficial fix uncovered a bug elsewhere. I changed the constant
176 folder to prefer integer results over double if the numbers are the
177 same. In this case, they aren't, but it leaves the integer value there
178 anyway because the storage is already allocated for it, and it *might*
179 be used in an integer context. And since it's producing a constant, it
180 sets READONLY. Unfortunately, sv_2pv() bogusly preferred the integer
181 value to the double when READONLY was set. This never showed up if you
184 print 1.4142135623731;
186 because in that case, there was already a string value.
189 NETaa13772: shmwrite core dumps consistently
191 Files patched: opcode.h opcode.pl
192 The shmwrite operator is a list operator but neglected to push a stack
193 mark beforehand, because an 'm' was missing from opcode.pl.
195 NETaa13773: $. was misdocumented as read-only.
197 Files patched: pod/perlvar.pod
198 <1.array-element-read-only>
199 % perl -le '$,=", "; $#w=5; for (@w) { $_=1; } print @w'
200 Modification of a read-only value attempted at -e line 1.
201 % perl4 -le '$,=", "; $#w=5; for (@w) { $_=1; } print @w'
204 This one may stay the way it is for performance reasons.
211 % perl -e 'BEGIN { local $/ = ""; } print "$.:$_" while <>;' abc
215 % perl -e '{ local $/ = ""; } print "$.:$_" while <>;' abc
220 $/ wasn't initialized early enough, so local set it back to permanently
221 undefined on exit from the block.
224 % perl -le 'print grep(/^-/ ? ($x=$_) x 0 : 1, "a", "-b", "c");'
227 % perl4 -le 'print grep(/^-/ ? ($x=$_) x 0 : 1, "a", "-b", "c");'
230 An extra mark was left on the stack if (('x') x $repeat) was used in a scalar
233 <4.input-lineno-assign>
234 # perl -w does not complain about assignment to $. (Is this just a feature?)
235 # perlvar.pod says "This variable should be considered read-only."
240 % perl -wnle '$. = 10 if $. == 2; print "$.:$_"' abc
247 <5.local-soft-ref.bug>
248 % perl -e 'local ${"a"}=1;'
249 zsh: 529 segmentation fault perl -e 'local ${"a"}=1;'
252 Can't localize a reference at -e line 1.
255 % perl -e 'package foo; sub foo { 1; } package main; $_ = foo::foo(); print'
258 package readline; sub foo { 1; } package main; $_ = readline::foo(); print'
259 Undefined subroutine &main::foo called at -e line 1.
261 package readline; sub foo { 1; } package main; $_ = &readline::foo(); print'
264 Now treats foo::bar correctly even if foo is a keyword.
266 <7.page-head-set-to-null-string>
268 #From: russell@ccu1.auckland.ac.nz (Russell Fulton)
269 #Newsgroups: comp.lang.perl
270 #Subject: This script causes Perl 5.00 to sementation fault
271 #Date: 15 Nov 1994 00:11:37 GMT
272 #Message-ID: <3a8ubp$jrj@net.auckland.ac.nz>
274 select((select(STDOUT), $^='')[0]); #this is the critical line
285 zsh: 1799 segmentation fault perl /tmp/page-head
288 Undefined top format "main::" called at ./try line 11.
292 % perl -le 'sub foo {0}; $x[0]=0;$x[foo]<=0'
293 Unterminated <> operator at -e line 1.
294 % perl -le 'sub foo {0}; $x[0]=0;$x[foo()]<=0'
296 A right square bracket now forces expectation of an operator.
298 <9.unary-minus-to-regexp-var>
300 #From: Michael Cook <mcook@cognex.com>
301 #Newsgroups: comp.lang.perl
302 #Subject: bug: print -$1
303 #Date: 01 Feb 1995 15:31:25 GMT
304 #Message-ID: <MCOOK.95Feb1103125@erawan.cognex.com>
317 Apparently already fixed in my copy.
321 ## Offset values are changed for my machine.
323 #From: augustin@gdstech.grumman.com (Conrad Augustin)
324 #Subject: perl5 vec() bug?
325 #Message-ID: <1994Nov22.193728.25762@gdstech.grumman.com>
326 #Date: Tue, 22 Nov 1994 19:37:28 GMT
328 #The following two statements each produce a segmentation fault in perl5:
330 #vec($a, 21406, 32) = 1; # seg fault
331 vec($a, 42813, 16) = 1; # seg fault
333 #When the offset values are one less, all's well:
334 #vec($a, 21405, 32) = 1; # ok
335 #vec($a, 42812, 16) = 1; # ok
337 #Interestingly, this is ok for all high values of N:
338 #$N=1000000; vec($a, $N, 8) = 1;
341 zsh: 1806 segmentation fault perl vec-bug
343 Can't reproduce this one.
346 NETaa13773: $/ not correctly localized in BEGIN
347 Files patched: perl.c
350 NETaa13773: foo::bar was misparsed if foo was a reserved word
351 Files patched: toke.c toke.c
354 NETaa13773: right square bracket didn't force expectation of operator
355 Files patched: toke.c
358 NETaa13773: scalar ((x) x $repeat) left stack mark
362 NETaa13778: -w coredumps on <$>
364 Files patched: pp_hot.c toke.c
365 Now produces suggested error message. Also installed guard in warning code
368 NETaa13779: foreach didn't use savestack mechanism
370 Files patched: cop.h pp_ctl.c
371 The foreach mechanism saved the old scalar value on the context stack
372 rather than the savestack. It could consequently get out of sync if
373 unexpectedly unwound.
375 NETaa13785: GIMME sometimes used wrong context frame
377 Files patched: embed.h global.sym op.h pp_ctl.c proto.h
378 The expression inside the return was taking its context from the immediately
379 surrounding block rather than the innermost surrounding subroutine call.
381 NETaa13794: TieHash produces ${pack} warnings
382 From: Stanley Donald Capelik x74321 24-5200 021876
383 Files patched: lib/TieHash.pm
384 Changed $pack to $pkg.
386 NETaa13797: could modify sv_undef through auto-vivification
387 From: Ilya Zakharevich
389 Inserted the missing check for readonly values on auto-vivification.
391 NETaa13798: if (...) {print} treats print as quoted
393 Files patched: toke.c
394 The trailing paren of the condition was setting expectations to XOPERATOR
395 rather than XBLOCK, so it was being treated like ${print}.
397 NETaa13926: commonality was not detected in assignments using COND_EXPR
399 Files patched: opcode.h opcode.pl
400 The assignment compiler didn't check the 2nd and 3rd args of a ?:
401 for commonality. It still doesn't, but I made ?: into a "dangerous"
402 operator so it is forced to treat it as common.
404 NETaa13957: was marking the PUSHMARK as modifiable rather than the arg
406 Files patched: op.c sv.c
407 It was marking the PUSHMARK as modifiable rather than the arg.
409 NETaa13962: documentation of behavior of scalar <*> was unclear
410 From: Tom Christiansen
411 Files patched: pod/perlop.pod
412 Added the following to perlop:
414 A glob only evaluates its (embedded) argument when it is starting a new
415 list. All values must be read before it will start over. In a list
416 context this isn't important, because you automatically get them all
417 anyway. In a scalar context, however, the operator returns the next value
418 each time it is called, or a FALSE value if you've just run out. Again,
419 FALSE is returned only once. So if you're expecting a single value from
420 a glob, it is much better to say
428 because the latter will alternate between returning a filename and
432 NETaa13992: regexp comments not seen after + in non-extended regexp
434 Files patched: regcomp.c
435 The code to skip regexp comments was guarded by a conditional that only
436 let it work when /x was in effect.
438 NETaa14014: use subs should not count as definition, only as declaration
441 On *foo = \&bar, doesn't set GVf_IMPORTED if foo and bar are in same package.
443 NETaa14021: sv_inc and sv_dec "upgraded" magical SV to non-magical
447 The sv_inc() and sv_dec() routines "upgraded" null magical SVs to non-magical.
449 NETaa14086: require should check tainting
450 From: Karl Simon Berg
451 Files patched: pp_ctl.c
452 Since we shouldn't allow tainted requires anyway, it now says:
454 Insecure dependency in require while running with -T switch at tst.pl line 1.
456 NETaa14104: negation fails on magical variables like $1
459 Negation was failing on magical values like $1. It was testing the wrong
460 bits and also failed to provide a final "else" if none of the bits matched.
462 NETaa14107: deep sort return leaked contexts
463 From: Quentin Fennessy
464 Files patched: pp_ctl.c
465 Needed to call dounwind() appropriately.
467 NETaa14129: attempt to localize via a reference core dumps
469 Files patched: op.c pod/perldiag.pod
470 Now produces an error "Can't localize a reference", with explanation in
473 NETaa14138: substr() and s/// can cause core dump
475 Files patched: pp_hot.c
476 Forgot to call SvOOK_off() on the SV before freeing its string.
478 NETaa14145: ${@INC}[0] dumped core in debugger
481 Now croaks "Bizarre copy of ARRAY in block exit", which is better than
482 a core dump. The fact that ${@INC}[0] means $INC[0] outside the debugger
485 NETaa14147: bitwise assignment ops wipe out byte of target string
487 Files patched: doop.c
488 The code was assuming that the target was not either of the two operands,
489 which is false for an assignment operator.
491 NETaa14153: lexing of lexicals in patterns fooled by character class
493 Files patched: toke.c
494 It never called the dwimmer, which is how it fooled it.
496 NETaa14154: allowed autoloaded methods by recognizing sub method; declaration
499 Made sub method declaration sufficient for autoloader to stop searching on.
501 NETaa14156: shouldn't optimize block scope on tainting
503 Files patched: op.c toke.c
504 I totally disabled the block scope optimization when running tainted.
506 NETaa14157: -T and -B only allowed 1/30 "odd" characters--changed to 1/3
508 Files patched: pp_sys.c
509 Applied suggested patch.
511 NETaa14160: deref of null symbol should produce null list
513 Files patched: pp_hot.c
514 It didn't check for list context before returning undef.
516 NETaa14162: POSIX::gensym now returns a symbol reference
517 From: Josh N. Pritikin
519 Files patched: ext/POSIX/POSIX.pm
520 Applied suggested patch.
522 NETaa14164: POSIX autoloader now distinguishes non-constant "constants"
523 From: Tim Bunce <Tim.Bunce@ig.co.uk>
524 Files patched: ext/POSIX/POSIX.pm ext/POSIX/POSIX.xs
525 The .xs file now distinguishes non-constant "constants" by setting EAGAIN.
526 This will also let us use #ifdef within the .xs file to de-constantify
527 any other macros that happen not to be constants even if they don't use
530 NETaa14166: missing semicolon after "my" induces core dump
532 Files patched: toke.c
533 The parser was left thinking it was still processing a "my", and flubbed.
534 I made it wipe out the "in_my" variable on a syntax error.
536 NETaa14166: missing semicolon after "my" induces core dump"
537 Files patched: toke.c
540 NETaa14206: can now use English and strict at the same time
543 It now counts imported symbols as okay under "use strict".
545 NETaa14206: can now use English and strict at the same time
546 Files patched: gv.c pod/perldiag.pod
549 NETaa14265: elseif now produces severe warning
551 Files patched: pod/perldiag.pod toke.c
552 Now complains explicitly about "elseif".
554 NETaa14279: list assignment propagated taintedness to independent scalars
556 Files patched: pp_hot.c
557 List assignment needed to be modified so that tainting didn't propagate
558 between independent scalar values.
560 NETaa14312: undef in @EXPORTS core dumps
562 Files patched: lib/Exporter.pm
565 Unable to create sub named "t::" at lib/Exporter.pm line 159.
566 Illegal null symbol in @t::EXPORT at -e line 1
567 BEGIN failed--compilation aborted at -e line 1.
570 NETaa14312: undef in @EXPORTS core dumps
571 Files patched: pod/perldiag.pod sv.c
574 NETaa14321: literal @array check shouldn't happen inside embedded expressions
576 Files patched: toke.c
577 The general solution to this is to disable the literal @array check within
578 any embedded expression. For instance, this also failed bogusly:
582 The reason fixing this also fixes the s///e problem is that the lexer
583 effectively puts the RHS into a do {} block, making the expression
584 embedded within curlies, as far as the error message is concerned.
586 NETaa14322: now localizes $! during POSIX::AUTOLOAD
588 Files patched: ext/POSIX/POSIX.pm
591 NETaa14324: defined() causes spurious sub existence
592 From: "Andreas Koenig"
593 Files patched: op.c pp.c
594 It called pp_rv2cv which wrongly assumed it could add any sub it referenced.
596 NETaa14336: use Module () forces import of nothing
599 use Module () now refrains from calling import at all.
601 NETaa14353: added special HE allocator
603 Files patched: global.sym
605 NETaa14353: added special HE allocator
606 Files patched: hv.c perl.h
608 NETaa14353: array extension now converts old memory to SV storage.
609 Files patched: av.c av.h sv.c
611 NETaa14353: hashes now convert old storage into SV arenas.
612 Files patched: global.sym
614 NETaa14353: hashes now convert old storage into SV arenas.
615 Files patched: hv.c perl.h
617 NETaa14353: upgraded SV arena allocation
618 Files patched: proto.h
620 NETaa14353: upgraded SV arena allocation
621 Files patched: perl.c sv.c
623 NETaa14422: added rudimentary prototypes
625 Files patched: Makefile.SH op.c op.c perly.c perly.c.diff perly.h perly.y proto.h sv.c toke.c
626 Message-Id: <9509290018.AA21548@scalpel.netlabs.com>
627 To: doughera@lafcol.lafayette.edu (Andy Dougherty)
628 Cc: perl5-porters@africa.nicoh.com
629 Subject: Re: Jumbo Configure patch vs. 1m.
630 Date: Thu, 28 Sep 95 17:18:54 -0700
631 From: lwall@scalpel.netlabs.com (Larry Wall)
633 : No. Larry's currently got the patch pumpkin for all such core perl topics.
635 I dunno whether you should let me have the patch pumpkin or not. To fix
636 a Sev 2 I just hacked in rudimentary prototypes. :-)
638 We can now define true unary subroutines, as well as argumentless
641 sub baz () { 12; } # Must not have argument
642 sub bar ($) { $_[0] * 7 } # Must have exactly one argument
643 sub foo ($@) { print "@_\n" } # Must have at least one argument
644 foo bar baz / 2 || "oops", "is the answer";
646 This prints "42 is the answer" on my machine. That is, it's the same as
648 foo( bar( baz() / 2) || "oops", "is the answer");
650 Attempting to compile
656 Too few arguments for main::foo at ./try line 8, near "foo;"
664 Too many arguments for main::bar at ./try line 8, near "foo;"
668 @array = ('a','b','c');
671 prints "3 a b c" because the $ puts the first arg of foo into scalar context.
673 The main win at this point is that we can say
678 and the user can say AAA + BBB and get 3.
680 I'm not quite sure how this interacts with autoloading though. I fear
681 POSIX.pm will need to say
689 sub _SC_STREAM_MAX ();
690 sub _SC_TZNAME_MAX ();
693 unless we can figure out how to efficiently declare a default prototype
694 at import time. Meaning, not using eval. Currently
698 (the ordinary import mechanism) implicitly stubs &bar with no prototype if
699 &bar is not yet declared. It's almost like you want an AUTOPROTO to
700 go with your AUTOLOAD.
702 Another thing to rub one's 5 o'clock shadow over is that there's no way
703 to apply a prototype to a method call at compile time.
705 And no, I don't want to have the
707 sub howabout ($formal, @arguments) { ... }
713 NETaa14444: lexical scalar didn't autovivify
714 From: Gurusamy Sarathy
715 Files patched: op.c pp_hot.c
716 It didn't have code in pp_padsv to do the right thing.
718 NETaa14448: caller could dump core when used within an eval or require
719 From: Danny R. Faught
720 Files patched: pp_ctl.c
721 caller() was incorrectly assuming the context stack contained a subroutine
722 context when it in fact contained an eval context.
724 NETaa14451: improved error message on bad pipe filehandle
725 From: Danny R. Faught
726 Files patched: pp_sys.c
727 Now says the slightly more informative
729 Can't use an undefined value as filehandle reference at ./try line 3.
731 NETaa14462: pp_dbstate had a scope leakage on recursion suppression
733 Files patched: pp_ctl.c
734 Swapped the code in question around.
736 NETaa14482: sv_unref freed ref prematurely at times
737 From: Gurusamy Sarathy
739 Made sv_unref() mortalize rather than free the old reference.
741 NETaa14484: appending string to array produced bizarre results
743 Also: Malcolm Beattie
744 Files patched: pp_hot.c
745 Will now say, "Can't coerce ARRAY to string".
747 NETaa14525: assignment to globs didn't reset them correctly
748 From: Gurusamy Sarathy
750 Applied parts of patch not overridden by subsequent patch.
752 NETaa14529: a partially matching subpattern could spoof infinity detector
754 Files patched: regexec.c
755 A partial match on a subpattern could fool the infinite regress detector
756 into thinking progress had been made.
757 The previous workaround prevented another bug (NETaa14529) from being fixed,
758 so I've backed it out. I'll need to think more about how to detect failure
759 to progress. I'm still hopeful it's not equivalent to the halting problem.
761 NETaa14535: patches from Gurusamy Sarathy
762 From: Gurusamy Sarathy
763 Files patched: op.c pp.c pp_hot.c regexec.c sv.c toke.c
764 Applied most recent suggested patches.
766 NETaa14538: method calls were treated like do {} under loop modifiers
767 From: Ilya Zakharevich
768 Files patched: perly.c perly.y
769 Needed to take the OPf_SPECIAL flag off of entersubs from method reductions.
770 (It was probably a cut-and-paste error from long ago.)
772 NETaa14540: foreach (@array) no longer does extra stack copy
773 From: darrinm@lmc.com
774 Files patched: Todo op.c pp_ctl.c pp_hot.c
775 Fixed by doing the foreach(@array) optimization, so it iterates
776 directly through the array, and can detect the implicit shift from
779 NETaa14548: magic sets didn't check private OK bits
780 From: W. Bradley Rubenstein
782 The magic code was getting mixed up between private and public POK bits.
784 NETaa14550: made ~ magic magical
787 Applied suggested patch.
789 NETaa14551: humongous header causes infinite loop in format
791 Files patched: pp_sys.c
792 Needed to check for page exhaustion after doing top-of-form.
794 NETaa14558: attempt to call undefined top format core dumped
795 From: Hallvard B Furuseth
796 Files patched: pod/perldiag.pod pp_sys.c
797 Now issues an error on attempts to call a non-existent top format.
799 NETaa14561: Gurusamy Sarathy's G_KEEPERR patch
801 Also: Gurusamy Sarathy
803 Files patched: cop.h interp.sym perl.c perl.h pp_ctl.c pp_sys.c sv.c toke.c
804 Applied latest patch.
806 NETaa14581: shouldn't execute BEGIN when there are compilation errors
807 From: Rickard Westman
809 Perl should not try to execute BEGIN and END blocks if there's been a
812 NETaa14582: got SEGV sorting sparse array
814 Files patched: pp_ctl.c
815 Now weeds out undefined values much like Perl 4 did.
816 Now sorts undefined values to the front.
818 NETaa14582: sort was letting unsortable values through to comparison routine
819 Files patched: pp_ctl.c
822 NETaa14614: now does dbmopen with perl_eval_sv()
824 Files patched: perl.c pp_sys.c proto.h
825 dbmopen now invokes perl_eval_sv(), which should handle error conditions
828 NETaa14636: Jumbo Dynaloader patch
830 Files patched: ext/DynaLoader/DynaLoader.pm ext/DynaLoader/dl_dld.xs
831 ext/DynaLoader/dl_dlopen.xs ext/DynaLoader/dl_hpux.xs
832 ext/DynaLoader/dl_next.xs ext/DynaLoader/dl_vms.xs ext/DynaLoader/dlutils.c
833 Applied suggested patches.
835 NETaa14637: checkcomma routine was stupid about bareword sub calls
836 From: Tim Bunce <Tim.Bunce@ig.co.uk>
837 Files patched: toke.c
838 The checkcomma routine was stupid about bareword sub calls.
840 NETaa14639: (?i) didn't reset on runtime patterns
842 Files patched: op.h pp_ctl.c toke.c
843 It didn't distinguish between permanent flags outside the pattern and
844 temporary flags within the pattern.
846 NETaa14649: selecting anonymous globs dumps core
847 From: Chip Salzenberg
848 Files patched: cop.h doio.c embed.h global.sym perl.c pp_sys.c proto.h
849 Applied suggested patch, but reversed the increment and decrement to avoid
850 decrementing and freeing what we're going to increment.
852 NETaa14655: $? returned negative value on AIX
855 Files patched: pp_sys.c
856 Applied suggested patch.
858 NETaa14658: infinite loop in c2ph
859 From: Nick Gianniotis
860 Files patched: c2ph.SH
861 Applied suggested patch.
863 NETaa14668: {2,} could match once
864 From: Hugo van der Sanden
865 Files patched: regexec.c
866 When an internal pattern failed a conjecture, it didn't back off on the
867 number of times it thought it had matched.
869 NETaa14673: open $undefined dumped core
870 From: Samuli K{rkk{inen
871 Files patched: pp_sys.c
872 pp_open() didn't check its argument for globness.
874 NETaa14683: stringifies were running pad out of space
876 Files patched: op.h toke.c
877 Increased PADOFFSET to a U32, and made lexer not put double-quoted strings
878 inside OP_STRINGIFY unless they really needed it.
880 NETaa14689: shouldn't have . in @INC when tainting
881 From: William R. Somsky
882 Files patched: perl.c
883 Now does not put . into @INC when tainting. It may still be added with a
887 or, to put it at the end,
889 BEGIN { push(@INC, ".") }
891 but this is not recommended unless a chdir to a known location has been done
894 NETaa14690: values inside tainted SVs were ignored
895 From: "James M. Stern"
896 Files patched: pp.c pp_ctl.c
897 It was assuming that a tainted value was a string.
899 NETaa14692: format name required qualification under use strict
900 From: Tom Christiansen
902 Now treats format names the same as subroutine names.
904 NETaa14695: added simple regexp caching
906 Files patched: pp_ctl.c
907 Applied suggested patch.
909 NETaa14697: regexp comments were sometimes wrongly treated as literal text
910 From: Tom Christiansen
911 Files patched: regcomp.c
912 The literal-character grabber didn't know about extended comments.
914 (By the way, Tom, the boxed form of quoting in the previous enclosure is
915 exceeding antisocial when you want to extract the code from it.)
917 NETaa14704: closure got wrong outer scope if outer sub was predeclared
920 The outer scope of the anonymous sub was set to the stub rather than to
921 the actual subroutine. I kludged it by making the outer scope of the
922 stub be the actual subroutine, if anything is depending on the stub.
924 NETaa14705: $foo .= $foo did free memory read
927 Now modifies address to copy if it was reallocated.
929 NETaa14711: added (&) and (*) prototypes for blocks and symbols
930 From: Kenneth Albanowski
931 Files patched: Makefile.SH op.c perly.c perly.h perly.y toke.c
932 & now means that it must have an anonymous sub as that argument. If
933 it's the first argument, the sub may be specified as a block in the
934 indirect object slot, much like grep or sort, which have prototypes of (&@).
936 Also added * so you can do things like
940 myopen(FOO, $filename);
942 NETaa14713: setuid FROM root now defaults to not do tainting
944 Files patched: mg.c perl.c pp_hot.c
945 Applied suggested patch.
947 NETaa14714: duplicate magics could be added to an SV
949 Files patched: sv.c sv.c
950 The sv_magic() routine didn't properly check to see if it already had a
951 magic of that type. Ordinarily it would have, but it was called during
952 mg_get(), which forces the magic flags off temporarily.
954 NETaa14734: ref should never return undef
956 Files patched: pp.c t/op/overload.t
957 Now returns null string.
959 NETaa14751: slice of undefs now returns null list
961 Files patched: pp.c pp_hot.c
962 Null list clobberation is now done in lslice, not aassign.
964 NETaa14789: select coredumped on Linux
966 Files patched: pp_sys.c
967 Applied suggested patches, more or less.
969 NETaa14789: straightened out ins and out of duping
970 Files patched: lib/IPC/Open3.pm
973 NETaa14791: implemented internal SUPER class
974 From: Nick Ing-Simmons
977 Applied suggested patch.
979 NETaa14845: s/// didn't handle offset strings
981 Files patched: pp_ctl.c
982 Needed a call to SvOOK_off(targ) in pp_substcont().
984 NETaa14851: Use of << to mean <<"" is deprecated
986 Files patched: toke.c
988 NETaa14865: added HINT_BLOCK_SCOPE to "elsif"
990 Files patched: perly.y
991 Needed to set HINT_BLOCK_SCOPE on "elsif" to prevent the do block from
992 being optimized away, which caused the statement transition in elsif
993 to reset the stack too far back.
995 NETaa14876: couldn't delete localized GV safely
997 Files patched: pp.c scope.c
998 The reference count of the "borrowed" GV needed to be incremented while
999 there was a reference to it in the savestack.
1001 NETaa14887: couldn't negate magical scalars
1003 Also: Gurusamy Sarathy
1005 Applied suggested patch, more or less. (It's not necessary to test both
1006 SvNIOK and SvNIOKp, since the private bits are always set if the public
1009 NETaa14893: /m modifier was sticky
1011 Files patched: pp_ctl.c
1012 pp_match() and pp_subst() were using an improperly scoped SAVEINT to restore
1013 the value of the internal variable multiline.
1015 NETaa14893: /m modifier was sticky
1016 Files patched: cop.h pp_hot.c
1019 Needed to make install paths absolute.
1020 Files patched: installperl
1023 Files patched: perly.h
1025 makedir() looped on a symlink to a directory.
1026 Files patched: installperl
1033 Nearly all the changes for 5.001 were bug fixes of one variety or another,
1034 so here's the bug list, along with the "resolution" for each of them. If
1035 you wish to correspond about any of them, please include the bug number.
1037 There were a few that can be construed as enhancements:
1038 NETaa13059: now warns of use of \1 where $1 is necessary.
1039 NETaa13512: added $SIG{__WARN__} and $SIG{__DIE__} hooks
1040 NETaa13520: added closures
1041 NETaa13530: scalar keys now resets hash iterator
1042 NETaa13641: added Tim's fancy new import whizbangers
1043 NETaa13710: cryptswitch needed to be more "useable"
1044 NETaa13716: Carp now allows multiple packages to be skipped out of
1045 NETaa13716: now counts imported routines as "defined" for redef warnings
1046 (and, of course, much of the stuff from the perl5-porters)
1048 NETaa12974: README incorrectly said it was a pre-release.
1049 Files patched: README
1051 NETaa13033: goto pushed a bogus scope on the context stack.
1053 Files patched: pp_ctl.c
1054 The goto operator pushed an extra bogus scope onto the context stack. (This
1055 often didn't matter, since many things pop extra unrecognized scopes off.)
1057 NETaa13034: tried to get valid pointer from undef.
1059 Also: Achille Hui, the Day Dreamer
1061 Files patched: pp_sys.c
1062 Now treats undef specially, and calls SvPV_force on any non-numeric scalar
1063 value to get a real pointer to somewhere.
1065 NETaa13035: included package info with filehandles.
1066 From: Jack Shirazi - BIU
1067 Files patched: pp_hot.c pp_sys.c
1068 Now passes a glob to filehandle methods to keep the package info intact.
1070 NETaa13048: didn't give strict vars message on every occurrence.
1073 It now complains about every occurrence. (The bug resulted from an
1074 ill-conceived attempt to suppress a duplicate error message in a
1075 suboptimal fashion.)
1077 NETaa13052: test for numeric sort sub return value fooled by taint magic.
1078 From: Peter Jaspers-Fayer
1079 Files patched: pp_ctl.c sv.h
1080 The test to see if the sort sub return value was numeric looked at the
1081 public flags rather than the private flags of the SV, so taint magic
1082 hid that info from the sort.
1084 NETaa13053: forced a2p to use byacc
1085 From: Andy Dougherty
1086 Files patched: MANIFEST x2p/Makefile.SH x2p/a2p.c
1087 a2p.c is now pre-byacced and shipped with the kit.
1089 NETaa13055: misnamed constant in previous patch.
1090 From: Conrad Augustin
1091 Files patched: op.c op.h toke.c
1092 The tokener translates $[ to a constant, but with a special marking in case
1093 the constant gets assigned to or localized. Unfortunately, the marking
1094 was done with a combination of OPf_SPECIAL and OPf_MOD that was easily
1095 spoofed. There is now a private OPpCONST_ARYLEN flag for this purpose.
1097 NETaa13055: use of OPf_SPECIAL for $[ lvaluehood was too fragile.
1098 Files patched: op.c op.h toke.c
1101 NETaa13056: convert needs to throw away any number info on its list.
1102 From: Jack Shirazi - BIU
1104 The listiness of the argument list leaked out to the subroutine call because
1105 of how prepend_elem and append_elem reuse an existing list. The convert()
1106 routine just needs to discard any listiness it finds on its argument.
1108 NETaa13058: AUTOLOAD shouldn't assume size of @_ is meaningful.
1109 From: Florent Guillaume
1110 Files patched: ext/DB_File/DB_File.pm ext/Fcntl/Fcntl.pm ext/GDBM_File/GDBM_File.pm ext/Socket/Socket.pm h2xs.SH
1111 I just deleted the optimization, which is silly anyway since the eventual
1112 subroutine definition is cached.
1114 NETaa13059: now warns of use of \1 where $1 is necessary.
1115 From: Gustaf Neumann
1116 Files patched: toke.c
1119 Can't use \1 to mean $1 in expression at foo line 2
1121 along with an explanation in perldiag.
1123 NETaa13060: no longer warns on attempt to read <> operator's transition state.
1125 Files patched: pp_hot.c
1126 No longer warns on <> operator's transitional state.
1128 NETaa13140: warning said $ when @ would be more appropriate.
1129 From: David J. MacKenzie
1130 Files patched: op.c pod/perldiag.pod
1133 (Did you mean $ or @ instead of %?)
1135 and added more explanation to perldiag.
1137 NETaa13149: was reading freed memory to make incorrect error message.
1138 Files patched: pp_ctl.c
1139 It was reading freed memory to make an error message that would be
1140 incorrect in any event because it had the inner filename rather than
1143 NETaa13149: confess was sometimes less informative than croak
1145 Files patched: lib/Carp.pm
1148 NETaa13150: stderr needs to be STDERR in package
1150 Files patched: lib/File/CheckTree.pm
1151 Also fixed pl2pm to translate the filehandles to uppercase.
1153 NETaa13150: uppercases stdin, stdout and stderr
1154 Files patched: pl2pm
1157 NETaa13154: array assignment didn't notice package magic.
1158 From: Brian Reichert
1159 Files patched: pp_hot.c
1160 The list assignment operator looked for only set magic, but set magic is
1161 only on the elements of a magical hash, not on the hash as a whole. I made
1162 the operator look for any magic at all on the target array or hash.
1164 NETaa13155: &DB::DB left trash on the stack.
1166 Files patched: lib/perl5db.pl pp_ctl.c
1167 The call by pp_dbstate() to &DB::DB left trash on the stack. It now
1168 calls DB in list context, and DB returns ().
1170 NETaa13156: lexical variables didn't show up in debugger evals.
1173 The code that searched back up the context stack for the lexical scope
1174 outside the eval only partially took into consideration that there
1175 might be extra debugger subroutine frames that shouldn't be used, and
1176 ended up comparing the wrong statement sequence number to the range of
1177 valid sequence numbers for the scope of the lexical variable. (There
1178 was also a bug fixed in passing that caused the scope of lexical to go
1179 clear to the end of the subroutine even if it was within an inner block.)
1181 NETaa13157: any request for autoloaded DESTROY should create a null one.
1182 From: Tom Christiansen
1183 Files patched: lib/AutoLoader.pm
1184 If DESTROY.al is not located, it now creates sub DESTROY {} automatically.
1186 NETaa13158: now preserves $@ around destructors while leaving eval.
1188 Files patched: pp_ctl.c
1189 Applied supplied patch, except the whole second hunk can be replaced with
1191 sv_insert(errsv, 0, 0, message, strlen(message));
1193 NETaa13160: clarified behavior of split without arguments
1195 Files patched: pod/perlfunc.pod
1196 Clarified the behavior of split without arguments.
1198 NETaa13162: eval {} lost list/scalar context
1201 LEAVETRY didn't propagate number to ENTERTRY.
1203 NETaa13163: clarified documentation of foreach using my variable
1204 From: Tom Christiansen
1205 Files patched: pod/perlsyn.pod
1206 Explained that foreach using a lexical is still localized.
1208 NETaa13164: the dot detector for the end of formats was over-rambunctious.
1210 Files patched: toke.c
1211 The dot detector for the end of formats was over-rambunctious. It would
1212 pick up any dot that didn't have a space in front of it.
1214 NETaa13165: do {} while 1 never linked outer block into next chain.
1217 When the conditional of do {} while 1; was optimized away, it confused the
1218 postfix order construction so that the block that ordinarily sits around the
1219 whole loop was never executed. So when the loop tried to unstack between
1220 iterations, it got the wrong context, and blew away the lexical variables
1221 of the outer scope. Fixed it by introducing a NULL opcode that will be
1222 optimized away later.
1224 NETaa13167: coercion was looking at public bits rather than private bits.
1225 From: Randal L. Schwartz
1226 Also: Thomas Riechmann
1229 There were some bad ifdefs around the various varieties of set*id(). In
1230 addition, tainting was interacting badly with assignment to $> because
1231 sv_2iv() was examining SvPOK rather than SvPOKp, and so couldn't coerce
1232 a string uid to an integer one.
1234 NETaa13167: had some ifdefs wrong on set*id.
1235 Files patched: mg.c pp_hot.c
1238 NETaa13168: relaxed test for comparison of new and old fds
1239 From: Casper H.S. Dik
1240 Files patched: t/lib/posix.t
1241 I relaxed the comparison to just check that the new fd is greater.
1243 NETaa13169: autoincrement can corrupt scalar value state.
1245 Also: Tom Christiansen
1247 It assumed a PV didn't need to be upgraded to become an NV.
1249 NETaa13169: previous patch could leak a string pointer.
1253 NETaa13170: symbols missing from global.sym
1255 Files patched: global.sym
1256 Applied suggested patch.
1258 NETaa13171: \\ in <<'END' shouldn't reduce to \.
1259 From: Randal L. Schwartz
1260 Files patched: toke.c
1261 <<'END' needed to bypass ordinary single-quote processing.
1263 NETaa13172: 'use integer' turned off magical autoincrement.
1264 From: Erich Rickheit KSC
1265 Files patched: pp.c pp_hot.c
1266 The integer versions of the increment and decrement operators were trying too
1267 hard to be efficient.
1269 NETaa13172: deleted duplicate increment and decrement code
1270 Files patched: opcode.h opcode.pl pp.c
1273 NETaa13173: install should make shared libraries executable.
1274 From: Brian Grossman
1277 Files patched: installperl
1278 Now gives permission 555 to any file ending with extension specified by $dlext.
1280 NETaa13176: ck_rvconst didn't free the const it used up.
1283 I checked in many random memory leaks under this bug number, since it
1284 was an eval that brought many of them out.
1286 NETaa13176: didn't delete XRV for temp ref of destructor.
1290 NETaa13176: didn't delete op_pmshort in matching operators.
1294 NETaa13176: eval leaked the name of the eval.
1295 Files patched: scope.c
1298 NETaa13176: gp_free didn't free the format.
1302 NETaa13176: minor leaks in loop exits and constant subscript optimization.
1306 NETaa13176: plugged some duplicate struct allocation memory leaks.
1307 Files patched: perl.c
1310 NETaa13176: sv_clear of an FM didn't clear anything.
1314 NETaa13176: tr/// didn't mortalize its return value.
1318 NETaa13177: SCOPE optimization hid line number info
1319 From: David J. MacKenzie
1320 Also: Hallvard B Furuseth
1322 Every pass on the syntax tree has to keep track of the current statement.
1323 Unfortunately, the single-statement block was optimized into a single
1324 statement between the time the variable was parsed and the time the
1325 void code scan was done, so that pass didn't see the OP_NEXTSTATE
1326 operator, because it has been optimized to an OP_NULL.
1328 Fortunately, null operands remember what they were, so it was pretty easy
1329 to make it set the correct line number anyway.
1331 NETaa13178: some linux doesn't handle nm well
1333 Files patched: hints/linux.sh
1334 Applied supplied patch.
1336 NETaa13180: localized slice now pre-extends array
1339 A localized slice now pre-extends its array to avoid reallocation during
1340 the scope of the local.
1342 NETaa13181: m//g didn't keep track of whether previous match matched null.
1343 From: "philippe.verdret"
1344 Files patched: mg.h pp_hot.c
1345 A pattern isn't allowed to match a null string in the same place twice in
1346 a row. m//g wasn't keeping track of whether the previous match matched
1349 NETaa13182: now includes whitespace as a regexp metacharacter.
1351 Files patched: toke.c
1352 scan_const() now counts " \t\n\r\f\v" as metacharacters when scanning a pattern.
1354 NETaa13183: sv_setsv shouldn't try to clone an object.
1357 The sv_mortalcopy() done by the return in STORE called sv_setsv(),
1358 which cloned the object. sv_setsv() shouldn't be in the business of
1361 NETaa13184: bogus warning on quoted signal handler name removed.
1363 Files patched: toke.c
1364 Now doesn't complain unless the first non-whitespace character after the =
1365 is an alphabetic character.
1367 NETaa13186: now croaks on chop($')
1368 From: Casper H.S. Dik
1369 Files patched: doop.c
1370 Now croaks on chop($') and such.
1372 NETaa13187: "${foo::bar}" now counts as mere delimitation, not as a bareword.
1374 Files patched: toke.c
1375 "${foo::bar}" now counts as mere delimitation, not as a bareword inside a
1378 NETaa13188: for backward compatibility, looks for "perl -" before "perl".
1379 From: Russell Mosemann
1380 Files patched: toke.c
1381 Now allows non-whitespace characters on the #! line between the "perl"
1384 NETaa13188: now allows non-whitespace after #!...perl before switches.
1385 Files patched: toke.c
1388 NETaa13189: derivative files need to be removed before recreation
1390 Also: Dick Middleton
1391 Also: David J. MacKenzie
1392 Files patched: embed_h.sh x2p/Makefile.SH
1393 Fixed various little nits as suggested in several messages.
1395 NETaa13190: certain assignments can spoof pod directive recognizer
1396 From: Ilya Zakharevich
1397 Files patched: toke.c
1398 The lexer now only recognizes pod directives where a statement is expected.
1400 NETaa13194: now returns undef when there is no curpm.
1401 From: lusol@Dillon.CC.Lehigh.EDU
1403 Since there was no regexp prior to the "use", it was returning whatever the
1404 last successful match was within the "use", because there was no current
1405 regexp, so it treated it as a normal variable. It now returns undef.
1407 NETaa13195: semop had one S too many.
1408 From: Joachim Huober
1409 Files patched: opcode.pl
1410 The entry in opcode.pl had one too many S's.
1412 NETaa13196: always assumes it's a Perl script if -c is used.
1414 Files patched: toke.c
1415 It now will assume it's a Perl script if the -c switch is used.
1417 NETaa13197: changed implicit -> message to be more understandable.
1419 Files patched: op.c pod/perldiag.pod
1420 I changed the error message to be more understandable. It now says
1422 Can't use subscript on sort...
1425 NETaa13201: added OPpCONST_ENTERED flag to properly enter filehandle symbols.
1426 From: E. Jay Berkenbilt
1427 Also: Tom Christiansen
1428 Files patched: op.c op.h toke.c
1429 The grammatical reduction of a print statement didn't properly count
1430 the filehandle as a symbol reference because it couldn't distinguish
1431 between a symbol entered earlier in the program and a symbol entered
1432 for the first time down in the lexer.
1434 NETaa13203: README shouldn't mention uperl.o any more.
1436 Files patched: README
1438 NETaa13204: .= shouldn't warn on uninitialized target.
1440 Files patched: pp_hot.c
1441 No longer warns on uninitialized target of .= operator.
1443 NETaa13206: handy macros in XSUB.h
1445 Files patched: XSUB.h
1446 Added suggested macros.
1448 NETaa13228: commonality checker didn't treat lexicals as variables.
1449 From: mcook@cognex.com
1450 Files patched: op.c opcode.pl
1451 The list assignment operator tries to avoid unnecessary copies by doing the
1452 assignment directly if there are no common variables on either side of the
1453 equals. Unfortunately, the code that decided that only recognized references
1454 to dynamic variables, not lexical variables.
1456 NETaa13229: fixed sign stuff for complement, integer coercion.
1458 Files patched: perl.h pp.c sv.c
1459 Fixed ~0 and integer coercions.
1461 NETaa13230: no longer tries to reuse scratchpad temps if tainting in effect.
1464 I haven't reproduced it, but I believe the problem is the reuse of scratchpad
1465 temporaries between statements. I've made it not try to reuse them if
1466 tainting is in effect.
1468 NETaa13231: *foo = *bar now prevents typo warnings on "foo"
1471 Aliasing of the form *foo = *bar is now protected from the typo warnings.
1472 Previously only the *foo = \$bar form was.
1474 NETaa13235: require BAREWORD now introduces package name immediately.
1476 Files patched: toke.c
1477 require BAREWORD now introduces package name immediately. This lets the
1478 method intuit code work right even though the require hasn't actually run
1481 NETaa13289: didn't calculate correctly using arybase.
1483 Files patched: pp.c pp_hot.c
1484 The runtime code didn't use curcop->cop_arybase correctly.
1486 NETaa13301: store now throws exception on error
1487 From: Barry Friedman
1488 Files patched: ext/GDBM_File/GDBM_File.xs ext/NDBM_File/NDBM_File.xs ext/ODBM_File/ODBM_File.xs ext/SDBM_File/SDBM_File.xs
1489 Changed warn to croak in ext/*DBM_File/*.xs.
1491 NETaa13302: ctime now takes Time_t rather than Time_t*.
1492 From: Rodger Anderson
1493 Files patched: ext/POSIX/POSIX.xs
1494 Now declares a Time_t and takes the address of that in CODE.
1496 NETaa13302: shorter way to do this patch
1497 Files patched: ext/POSIX/POSIX.xs
1500 NETaa13304: could feed too large $@ back into croak, whereupon it croaked.
1502 Files patched: perl.c
1503 callist() could feed $@ back into croak with more than a bare %s. (croak()
1504 handles long strings with a bare %s okay.)
1506 NETaa13305: compiler misoptimized RHS to outside of s/a/print/e
1507 From: Brian S. Cashman <bsc@umich.edu>
1509 The syntax tree was being misconstructed because the compiler felt that
1510 the RHS was invariant, so it did it outside the s///.
1512 NETaa13314: assigning mortal to lexical leaks
1515 In stealing strings, sv_setsv was checking SvPOK to see if it should free
1516 the destination string. It should have been checking SvPVX.
1518 NETaa13316: wait4pid now recalled when errno == EINTR
1519 From: Robert J. Pankratz
1520 Files patched: pp_sys.c util.c
1521 system() and the close() of a piped open now recall wait4pid if it returned
1522 prematurely with errno == EINTR.
1524 NETaa13329: needed to localize taint magic
1526 Files patched: sv.c doio.c mg.c pp_hot.c pp_sys.c scope.c taint.c
1527 Taint magic is now localized better, though I had to resort to a kludge
1528 to allow a value to be both tainted and untainted simultaneously during
1533 when $_[0] is a reference to the variable $foo already.
1535 NETaa13341: clarified interaction of AnyDBM_File::ISA and "use"
1537 Files patched: pod/modpods/AnyDBMFile.pod
1538 The doc was misleading.
1540 NETaa13342: grep and map with block would enter block but never leave it.
1543 The compiler use some sort-checking code to handle the arguments of
1544 grep and map. Unfortunately, this wiped out the block exit opcode while
1545 leaving the block entry opcode. This doesn't matter to sort, but did
1546 matter to grep and map. It now leave the block entry intact.
1548 The reason it worked without the my is because the block entry and exit
1549 were optimized away to an OP_SCOPE, which it doesn't matter if it's there
1552 NETaa13343: goto needed to longjmp when in a signal handler.
1553 From: Robert Partington
1554 Files patched: pp_ctl.c
1555 goto needed to longjmp() when in a signal handler to get back into the
1556 right run() context.
1559 NETaa13344: strict vars shouldn't apply to globs or filehandles.
1562 Filehandles and globs will be excepted from "strict vars", so that you can
1563 do the standard Perl 4 trick of
1572 NETaa13345: assert.pl didn't use package DB
1574 Files patched: lib/assert.pl
1577 NETaa13348: av_undef didn't free scalar representing $#foo.
1580 av_undef didn't free scalar representing $#foo.
1582 NETaa13349: sort sub accumulated save stack entries
1584 Files patched: pp_ctl.c
1585 COMMON only gets set if assigning to @_, which is reasonable. Most of the
1586 problem was a memory leak.
1588 NETaa13351: didn't treat indirect filehandles as references.
1589 From: Andy Dougherty
1593 Can't use an undefined value as a symbol reference at ./foo line 3.
1596 NETaa13352: OP_SCOPE allocated as UNOP rather than LISTOP.
1597 From: Andy Dougherty
1600 NETaa13353: scope() didn't release filegv on OP_SCOPE optimization.
1603 When scope() nulled out a NEXTSTATE, it didn't release its filegv reference.
1605 NETaa13355: hv_delete now avoids useless mortalcopy
1607 Files patched: hv.c op.c pp.c pp_ctl.c proto.h scope.c util.c
1608 hv_delete now avoids useless mortalcopy.
1611 NETaa13359: comma operator section missing its heading
1613 Files patched: pod/perlop.pod
1615 NETaa13359: random typo
1616 Files patched: pod/perldiag.pod
1618 NETaa13360: code to handle partial vec values was bogus.
1619 From: Conrad Augustin
1621 The code that Mark J. added a long time ago to handle values that were partially
1622 off the end of the string was incorrect.
1624 NETaa13361: made it not interpolate inside regexp comments
1626 Files patched: toke.c
1627 To avoid surprising people, it no longer interpolates inside regexp
1630 NETaa13362: ${q[1]} should be interpreted like it used to
1632 Files patched: toke.c
1633 Now resolves ${keyword[1]} to $keyword[1] and warns if -w. Likewise for {}.
1635 NETaa13363: meaning of repeated search chars undocumented in tr///
1636 From: Stephen P. Potter
1637 Files patched: pod/perlop.pod
1638 Documented that repeated characters use the first translation given.
1640 NETaa13365: if closedir fails, don't try it again.
1641 From: Frank Crawford
1642 Files patched: pp_sys.c
1643 Now does not attempt to closedir a second time.
1645 NETaa13366: can't do block scope optimization on $1 et al when tainting.
1646 From: Andrew Vignaux
1647 Files patched: toke.c
1648 The tainting mechanism assumes that every statement starts out
1649 untainted. Unfortunately, the scope removal optimization for very
1650 short blocks removed the statementhood of statements that were
1651 attempting to read $1 as an untainted value, with the effect that $1
1652 appeared to be tainted anyway. The optimization is now disabled when
1653 tainting and the block contains $1 (or equivalent).
1655 NETaa13366: fixed this a better way in toke.c.
1659 NETaa13366: need to disable scope optimization when tainting.
1663 NETaa13367: Did a SvCUR_set without nulling out final char.
1664 From: "Rob Henderson" <robh@cs.indiana.edu>
1665 Files patched: doop.c pp.c pp_sys.c
1666 When do_vop set the length on its result string it neglected to null-terminate
1669 NETaa13368: bigrat::norm sometimes chucked sign
1670 From: Greg Kuperberg
1671 Files patched: lib/bigrat.pl
1672 The normalization routine was assuming that the gcd of two numbers was
1673 never negative, and based on that assumption managed to move the sign
1674 to the denominator, where it was deleted on the assumption that the
1675 denominator is always positive.
1677 NETaa13368: botched previous patch
1678 Files patched: lib/bigrat.pl
1681 NETaa13369: # is now a comment character, and \# should be left for regcomp.
1683 Files patched: toke.c
1684 It was not skipping the comment when it skipped the white space, and constructed
1685 an opcode that tried to match a null string. Unfortunately, the previous
1686 star tried to use the first character of the null string to optimize where
1687 to recurse, so it never matched.
1689 NETaa13369: comment after regexp quantifier induced non-match.
1690 Files patched: regcomp.c
1693 NETaa13370: some code assumed SvCUR was of type int.
1694 From: Spider Boardman
1695 Files patched: pp_sys.c
1696 Did something similar to the proposed patch. I also fixed the problem that
1697 it assumed the type of SvCUR was int. And fixed get{peer,sock}name the
1700 NETaa13375: sometimes dontbother wasn't added back into strend.
1701 From: Jamshid Afshar
1702 Files patched: regexec.c
1703 When the /g modifier was used, the regular expression code would calculate
1704 the end of $' too short by the minimum number of characters the pattern could
1707 NETaa13375: sv_setpvn now disallows negative length.
1711 NETaa13376: suspected indirect objecthood prevented recognition of lexical.
1712 From: Gisle.Aas@nr.no
1713 Files patched: toke.c
1714 When $data[0] is used in a spot that might be an indirect object, the lexer
1715 was getting confused over the rule that says the $data in $$data[0] isn't
1716 an array element. (The lexer uses XREF state for both indirect objects
1717 and for variables used as names.)
1719 NETaa13377: -I processesing ate remainder of #! line.
1720 From: Darrell Schiebel
1721 Files patched: perl.c
1722 I made the -I processing in moreswitches look for the end of the string,
1723 delimited by whitespace.
1725 NETaa13379: ${foo} now treated the same outside quotes as inside
1727 Files patched: toke.c
1728 ${bareword} is now treated the same outside quotes as inside.
1730 NETaa13379: previous fix for this bug was botched
1731 Files patched: toke.c
1734 NETaa13381: TEST should check for perl link
1735 From: Andy Dougherty
1736 Files patched: t/TEST
1737 die "You need to run \"make test\" first to set things up.\n" unless -e 'perl';
1740 NETaa13384: fixed version 0.000 botch.
1742 Files patched: installperl
1744 NETaa13385: return 0 from required file loses message
1745 From: Malcolm Beattie
1746 Files patched: pp_ctl.c
1749 NETaa13387: added pod2latex
1750 From: Taro KAWAGISHI
1751 Files patched: MANIFEST pod/pod2latex
1752 Added most recent copy to pod directory.
1754 NETaa13388: constant folding now prefers integer results over double
1755 From: Ilya Zakharevich
1757 Constant folding now prefers integer results over double.
1759 NETaa13389: now treats . and exec as shell metathingies
1761 Files patched: doio.c
1762 Now treats . and exec as shell metathingies.
1764 NETaa13395: eval didn't check taintedness.
1766 Files patched: pp_ctl.c
1768 NETaa13396: $^ coredumps at end of string
1770 Files patched: toke.c
1771 The scan_ident() didn't check for a null following $^.
1773 NETaa13397: improved error messages when operator expected
1775 Files patched: toke.c
1776 Added message (Do you need to predeclare BAR?). Also fixed the missing
1779 NETaa13399: cleanup by Andy
1781 Files patched: Changes Configure Makefile.SH README cflags.SH config.H config_h.SH deb.c doop.c dump.c ext/DB_File/DB_File.pm ext/DB_File/DB_File.xs ext/DynaLoader/DynaLoader.pm ext/Fcntl/Fcntl.pm ext/GDBM_File/GDBM_File.pm ext/POSIX/POSIX.pm ext/SDBM_File/sdbm/sdbm.h ext/Socket/Socket.pm ext/util/make_ext h2xs.SH hints/aix.sh hints/bsd386.sh hints/dec_osf.sh hints/esix4.sh hints/freebsd.sh hints/irix_5.sh hints/next_3_2.sh hints/sunos_4_1.sh hints/svr4.sh hints/ultrix_4.sh installperl lib/AutoSplit.pm lib/Cwd.pm lib/ExtUtils/MakeMaker.pm lib/ExtUtils/xsubpp lib/Term/Cap.pm mg.c miniperlmain.c perl.c perl.h perl_exp.SH pod/Makefile pod/perldiag.pod pod/pod2html pp.c pp_ctl.c pp_hot.c pp_sys.c proto.h sv.h t/re_tests util.c x2p/Makefile.SH x2p/a2p.h x2p/a2py.c x2p/handy.h x2p/hash.c x2p/hash.h x2p/str.c x2p/str.h x2p/util.c x2p/util.h x2p/walk.c
1783 NETaa13399: cleanup from Andy
1784 Files patched: MANIFEST
1786 NETaa13399: configuration cleanup
1787 Files patched: Configure Configure MANIFEST MANIFEST Makefile.SH Makefile.SH README config.H config.H config_h.SH config_h.SH configpm ext/DynaLoader/DynaLoader.pm ext/DynaLoader/dl_hpux.xs ext/NDBM_File/Makefile.PL ext/ODBM_File/Makefile.PL ext/util/make_ext handy.h hints/aix.sh hints/hpux_9.sh hints/hpux_9.sh hints/irix_4.sh hints/linux.sh hints/mpeix.sh hints/next_3_2.sh hints/solaris_2.sh hints/svr4.sh installperl installperl lib/AutoSplit.pm lib/ExtUtils/MakeMaker.pm lib/ExtUtils/MakeMaker.pm lib/ExtUtils/xsubpp lib/Getopt/Long.pm lib/Text/Tabs.pm makedepend.SH makedepend.SH mg.c op.c perl.h perl_exp.SH pod/perl.pod pod/perldiag.pod pod/perlsyn.pod pod/pod2man pp_sys.c proto.h proto.h unixish.h util.c util.c vms/config.vms writemain.SH x2p/a2p.h x2p/a2p.h x2p/a2py.c x2p/a2py.c x2p/handy.h x2p/util.c x2p/walk.c x2p/walk.c
1789 NETaa13399: new files from Andy
1790 Files patched: ext/DB_File/Makefile.PL ext/DynaLoader/Makefile.PL ext/Fcntl/Makefile.PL ext/GDBM_File/Makefile.PL ext/NDBM_File/Makefile.PL ext/ODBM_File/Makefile.PL ext/POSIX/Makefile.PL ext/SDBM_File/Makefile.PL ext/SDBM_File/sdbm/Makefile.PL ext/Socket/Makefile.PL globals.c hints/convexos.sh hints/irix_6.sh
1792 NETaa13399: patch0l from Andy
1793 Files patched: Configure MANIFEST Makefile.SH config.H config_h.SH ext/DB_File/Makefile.PL ext/GDBM_File/Makefile.PL ext/NDBM_File/Makefile.PL ext/POSIX/POSIX.xs ext/SDBM_File/sdbm/Makefile.PL ext/util/make_ext h2xs.SH hints/next_3_2.sh hints/solaris_2.sh hints/unicos.sh installperl lib/Cwd.pm lib/ExtUtils/MakeMaker.pm makeaperl.SH vms/config.vms x2p/util.c x2p/util.h
1795 NETaa13399: stuff from Andy
1796 Files patched: Configure MANIFEST Makefile.SH configpm hints/dec_osf.sh hints/linux.sh hints/machten.sh lib/ExtUtils/MakeMaker.pm util.c
1798 NETaa13399: Patch 0k from Andy
1799 Files patched: Configure MANIFEST Makefile.SH config.H config_h.SH hints/dec_osf.sh hints/mpeix.sh hints/next_3_0.sh hints/ultrix_4.sh installperl lib/ExtUtils/MakeMaker.pm lib/File/Path.pm makeaperl.SH minimod.PL perl.c proto.h vms/config.vms vms/ext/MM_VMS.pm x2p/a2p.h
1801 NETaa13399: Patch 0m from Andy
1802 Files patched: Configure MANIFEST Makefile.SH README config.H config_h.SH ext/DynaLoader/README ext/POSIX/POSIX.xs ext/SDBM_File/sdbm/sdbm.h ext/util/extliblist hints/cxux.sh hints/linux.sh hints/powerunix.sh lib/ExtUtils/MakeMaker.pm malloc.c perl.h pp_sys.c util.c
1804 NETaa13400: pod2html update from Bill Middleton
1806 Files patched: pod/pod2html
1808 NETaa13401: Boyer-Moore code attempts to compile string longer than 255.
1809 From: Kyriakos Georgiou
1810 Files patched: util.c
1811 The Boyer-Moore table uses unsigned char offsets, but the BM compiler wasn't
1812 rejecting strings longer than 255 chars, and was miscompiling them.
1814 NETaa13403: missing a $ on variable name
1816 Files patched: installperl
1817 Yup, it was missing.
1819 NETaa13406: didn't wipe out dead match when proceeding to next BRANCH
1820 From: Michael P. Clemens
1821 Files patched: regexec.c
1822 The code to check alternatives didn't invalidate backreferences matched by the
1825 NETaa13407: overload upgrade
1826 From: owner-perl5-porters@nicoh.com
1827 Also: Ilya Zakharevich
1828 Files patched: MANIFEST gv.c lib/Math/BigInt.pm perl.h pod/perlovl.pod pp.c pp.h pp_hot.c sv.c t/lib/bigintpm.t t/op/overload.t
1829 Applied supplied patch, and fixed bug induced by use of sv_setsv to do
1830 a deep copy, since sv_setsv no longer copies objecthood.
1832 NETaa13409: sv_gets tries to grow string at EOF
1833 From: Harold O Morris
1835 Applied suggested patch, only two statements earlier, since the end code
1836 also does SvCUR_set.
1838 NETaa13410: delaymagic did =~ instead of &= ~
1839 From: Andreas Schwab
1840 Files patched: pp_hot.c
1841 Applied supplied patch.
1843 NETaa13411: POSIX didn't compile under -DLEAKTEST
1844 From: Frederic Chauveau
1845 Files patched: ext/POSIX/POSIX.xs
1846 Used NEWSV instead of newSV.
1848 NETaa13412: new version from Tony Sanders
1850 Files patched: lib/Term/Cap.pm
1851 Installed as Term::Cap.pm
1853 NETaa13413: regmust extractor needed to restart loop on BRANCH for (?:) to work
1855 Files patched: regcomp.c
1856 The BRANCH skipper should have restarted the loop from the top.
1858 NETaa13414: the check for accidental list context was done after pm_short check
1859 From: Michael H. Coen
1860 Files patched: pp_hot.c
1861 Moved check for accidental list context to before the pm_short optimization.
1863 NETaa13418: perlre.pod babbled nonsense about | in character classes
1865 Files patched: pod/perlre.pod
1866 Removed bogus brackets. Now reads:
1867 Note however that "|" is interpreted as a literal with square brackets,
1868 so if you write C<[fee|fie|foe]> you're really only matching C<[feio|]>.
1870 NETaa13419: need to document introduction of lexical variables
1871 From: "Heading, Anthony"
1872 Files patched: pod/perlfunc.pod
1873 Now mentions that lexicals aren't introduced till after the current statement.
1875 NETaa13420: formats that overflowed a page caused endless top of forms
1876 From: Hildo@CONSUL.NL
1877 Files patched: pp_sys.c
1878 If a record is too large to fit on a page, it now prints whatever will
1879 fit and then calls top of form again on the remainder.
1881 NETaa13423: the code to do negative list subscript in scalar context was missing
1882 From: Steve McDougall
1884 The negative subscript code worked right in list context but not in scalar
1885 context. In fact, there wasn't code to do it in the scalar context.
1887 NETaa13424: existing but undefined CV blocked inheritance
1888 From: Spider Boardman
1890 Applied supplied patch.
1892 NETaa13425: removed extra argument to croak
1893 From: "R. Bernstein"
1894 Files patched: regcomp.c
1895 Removed extra argument.
1897 NETaa13427: added return types
1898 From: "R. Bernstein"
1899 Files patched: x2p/a2py.c
1900 Applied suggested patch.
1902 NETaa13427: added static declarations
1903 Files patched: x2p/walk.c
1906 NETaa13428: split was assuming that all backreferences were defined
1907 From: Dave Schweisguth
1909 split was assuming that all backreferences were defined.
1911 NETaa13430: hoistmust wasn't hoisting anchored shortcircuit's length
1912 From: Tom Christiansen
1914 Files patched: toke.c
1916 NETaa13432: couldn't call code ref under debugger
1918 Files patched: op.c pp_hot.c sv.h
1919 The debugging code assumed it could remember a name to represent a subroutine,
1920 but anonymous subroutines don't have a name. It now remembers a CV reference
1923 NETaa13435: 1' dumped core
1925 Files patched: toke.c
1926 Didn't check a pointer for nullness.
1928 NETaa13436: print foo(123) didn't treat foo as subroutine
1929 From: mcook@cognex.com
1930 Files patched: toke.c
1931 Now treats it as a subroutine rather than a filehandle.
1933 NETaa13437: &$::foo didn't think $::foo was a variable name
1934 From: mcook@cognex.com
1935 Files patched: toke.c
1936 Now treats $::foo as a global variable.
1938 NETaa13439: referred to old package name
1939 From: Tom Christiansen
1940 Files patched: lib/Sys/Syslog.pm
1941 Wasn't a strict refs problem after all. It was simply referring to package
1942 syslog, which had been renamed to Sys::Syslog.
1944 NETaa13440: stat operations didn't know what to do with glob or ref to glob
1945 From: mcook@cognex.com
1946 Files patched: doio.c pp_sys.c
1947 Now knows about the kinds of filehandles returned by FileHandle constructors
1950 NETaa13442: couldn't find name of copy of deleted symbol table entry
1951 From: Spider Boardman
1952 Files patched: gv.c gv.h
1953 I did a much simpler fix. When gp_free notices that it's freeing the
1954 master GV, it nulls out gp_egv. The GvENAME and GvESTASH macros know
1955 to revert to gv if egv is null.
1957 This has the advantage of not creating a reference loop.
1959 NETaa13443: couldn't override an XSUB
1960 From: William Setzer
1962 When the newSUB and newXS routines checked for whether the old sub was
1963 defined, they only looked at CvROOT(cv), not CvXSUB(cv).
1965 NETaa13443: needed to do same thing in newXS
1969 NETaa13444: -foo now doesn't warn unless sub foo is defined
1971 Files patched: toke.c
1972 Made it not warn on -foo, unless there is a sub foo defined.
1974 NETaa13451: in scalar context, pp_entersub now guarantees one item from XSUB
1975 From: Nick Gianniotis
1976 Files patched: pp_hot.c
1977 The pp_entersub routine now guarantees that an XSUB in scalar context
1978 returns one and only one value. If there are fewer, it pushes undef,
1979 and if there are more, it returns the last one.
1981 NETaa13457: now explicitly disallows printf format with 'n' or '*'.
1982 From: lees@cps.msu.edu
1983 Files patched: doop.c
1986 Use of n in printf format not supported at ./foo line 3.
1989 NETaa13458: needed to call SvPOK_only() in pp_substr
1992 Needed to call SvPOK_only() in pp_substr.
1994 NETaa13459: umask and chmod now warn about missing initial 0 even with paren
1995 From: Andreas Koenig
1996 Files patched: toke.c
1997 Now skips parens as well as whitespace looking for argument.
1999 NETaa13460: backtracking didn't work on .*? because reginput got clobbered
2000 From: Andreas Koenig
2001 Files patched: regexec.c
2002 When .*? did a probe of the rest of the string, it clobbered reginput,
2003 so the next call to match a . tried to match the newline and failed.
2005 NETaa13475: \(@ary) now treats array as list of scalars
2008 The mod() routine now refrains from marking @ary as an lvalue if it's in parens
2009 and is the subject of an OP_REFGEN.
2011 NETaa13481: accept buffer wasn't aligned good enough
2012 From: Holger Bechtold
2013 Also: Christian Murphy
2014 Files patched: pp_sys.c
2015 Applied suggested patch.
2017 NETaa13486: while (<>) now means while (defined($_ = <>))
2019 Files patched: op.c pod/perlop.pod
2020 while (<HANDLE>) now means while (defined($_ = <HANDLE>)).
2022 NETaa13500: needed DESTROY in FileHandle
2024 Files patched: ext/POSIX/POSIX.pm
2025 Added DESTROY method. Also fixed ungensym to use POSIX:: instead of _POSIX.
2026 Removed ungensym from close method, since DESTROY should do that now.
2028 NETaa13502: now complains if you use local on a lexical variable
2031 Now says something like
2033 Can't localize lexical variable $var at ./try line 6.
2035 NETaa13512: added $SIG{__WARN__} and $SIG{__DIE__} hooks
2037 Files patched: embed.h gv.c interp.sym mg.c perl.h pod/perlvar.pod pp_ctl.c util.c Todo pod/perldiag.pod
2039 NETaa13514: statements before intro of lex var could see lex var
2040 From: William Setzer
2042 When a lexical variable is declared, introduction is delayed until
2043 the start of the next statement, so that any initialization code runs
2044 outside the scope of the new variable. Thus,
2050 should print 3. Unfortunately, the declaration was marked with the
2051 beginning location at the time that "my $y" was processed instead of
2052 when the variable was introduced, so any embedded statements within
2053 an anonymous subroutine picked up the wrong "my". The declaration
2054 is now labelled correctly when the variable is actually introduced.
2056 NETaa13520: added closures
2058 Files patched: Todo cv.h embed.h global.sym gv.c interp.sym op.c perl.c perl.h pod/perlform.pod pp.c pp_ctl.c pp_hot.c sv.c sv.h toke.c
2060 NETaa13520: test to see if lexical works in a format now
2061 Files patched: t/op/write.t
2063 NETaa13522: substitution couldn't be used on a substr()
2065 Files patched: pp_ctl.c pp_hot.c
2066 Changed pp_subst not to use sv_replace() anymore, which didn't handle lvalues
2067 and was overkill anyway. Should be slightly faster this way too.
2069 NETaa13525: G_EVAL mode in perl_call_sv didn't return values right.
2070 Files patched: perl.c
2072 NETaa13525: consolidated error message
2074 Files patched: perl.h toke.c
2076 NETaa13525: derived it
2077 Files patched: perly.h
2079 NETaa13525: missing some values from embed.h
2080 Files patched: embed.h
2082 NETaa13525: random cleanup
2083 Files patched: MANIFEST Todo cop.h lib/TieHash.pm lib/perl5db.pl opcode.h patchlevel.h pod/perldata.pod pod/perlsub.pod t/op/ref.t toke.c
2085 NETaa13525: random cleanup
2086 Files patched: pp_ctl.c util.c
2088 NETaa13527: File::Find needed to export $name and $dir
2090 Files patched: lib/File/Find.pm
2091 They are now exported.
2093 NETaa13528: cv_undef left unaccounted-for GV pointer in CV
2095 Also: Spider Boardman
2098 NETaa13530: scalar keys now resets hash iterator
2100 Files patched: doop.c
2101 scalar keys() now resets the hash iterator.
2103 NETaa13531: h2ph doesn't check defined right
2104 From: Casper H.S. Dik
2105 Files patched: h2ph.SH
2107 NETaa13540: VMS update
2109 Files patched: MANIFEST README.vms doio.c embed.h ext/DynaLoader/dl_vms.xs interp.sym lib/Cwd.pm lib/ExtUtils/xsubpp lib/File/Basename.pm lib/File/Find.pm lib/File/Path.pm mg.c miniperlmain.c perl.c perl.h perly.c perly.c.diff pod/perldiag.pod pp_ctl.c pp_hot.c pp_sys.c proto.h util.c vms/Makefile vms/config.vms vms/descrip.mms vms/ext/Filespec.pm vms/ext/MM_VMS.pm vms/ext/VMS/stdio/Makefile.PL vms/ext/VMS/stdio/stdio.pm vms/ext/VMS/stdio/stdio.xs vms/genconfig.pl vms/perlvms.pod vms/sockadapt.c vms/sockadapt.h vms/vms.c vms/vmsish.h vms/writemain.pl
2111 NETaa13540: got some duplicate code
2112 Files patched: lib/File/Path.pm
2114 NETaa13540: stuff from Charles
2115 Files patched: MANIFEST README.vms lib/ExtUtils/MakeMaker.pm lib/ExtUtils/MakeMaker.pm lib/ExtUtils/xsubpp lib/File/Basename.pm lib/File/Path.pm perl.c perl.h pod/perldiag.pod pod/perldiag.pod vms/Makefile vms/Makefile vms/config.vms vms/config.vms vms/descrip.mms vms/descrip.mms vms/ext/Filespec.pm vms/ext/Filespec.pm vms/ext/MM_VMS.pm vms/ext/MM_VMS.pm vms/ext/VMS/stdio/stdio.pm vms/ext/VMS/stdio/stdio.xs vms/gen_shrfls.pl vms/gen_shrfls.pl vms/genconfig.pl vms/genconfig.pl vms/mms2make.pl vms/perlvms.pod vms/sockadapt.h vms/test.com vms/vms.c vms/vms.c vms/vmsish.h vms/vmsish.h vms/writemain.pl
2117 NETaa13540: tweak from Charles
2118 Files patched: lib/File/Path.pm
2120 NETaa13552: scalar unpack("P4",...) ignored the 4
2123 The optimization that tried to do only one item in a scalar context didn't
2124 realize that the argument to P was not a repeat count.
2126 NETaa13553: now warns about 8 or 9 in octal escapes
2128 Files patched: util.c
2129 Now warns if it finds 8 or 9 before the end of the octal escape sequence.
2130 So \039 produces a warning, but \0339 does not.
2132 NETaa13554: now allows foreach ${"name"}
2135 Instead of trying to remove OP_RV2SV, the compiler now just transmutes it into an
2136 OP_RV2GV, which is a no-op for ordinary variables and does the right
2137 thing for ${"name"}.
2139 NETaa13559: substitution now always checks for readonly
2140 From: Rodger Anderson
2141 Files patched: pp_hot.c
2142 Substitution now always checks for readonly.
2144 NETaa13561: added explanations of closures and curly-quotes
2146 Files patched: pod/perlref.pod
2148 NETaa13562: null components in path cause indigestion
2149 From: Ambrose Kofi Laing
2150 Files patched: lib/Cwd.pm lib/pwd.pl
2152 NETaa13575: documented semantics of negative substr length
2154 Files patched: pod/perlfunc.pod
2155 Documented the fact that negative length now leaves characters off the end,
2156 and while I was at it, made it work right even if offset wasn't 0.
2158 NETaa13575: negative length to substr didn't work when offset non-zero
2162 NETaa13575: random cleanup
2163 Files patched: pod/perlfunc.pod
2166 NETaa13580: couldn't localize $ACCUMULATOR
2168 Files patched: gv.c lib/English.pm mg.c perl.c sv.c
2169 Needed to make $^A a real magical variable. Also lib/English.pm wasn't
2172 NETaa13583: doc mods from Tom
2174 Files patched: pod/modpods/AnyDBMFile.pod pod/modpods/Basename.pod pod/modpods/Benchmark.pod pod/modpods/Cwd.pod pod/modpods/Dynaloader.pod pod/modpods/Exporter.pod pod/modpods/Find.pod pod/modpods/Finddepth.pod pod/modpods/Getopt.pod pod/modpods/MakeMaker.pod pod/modpods/Open2.pod pod/modpods/POSIX.pod pod/modpods/Ping.pod pod/modpods/less.pod pod/modpods/strict.pod pod/perlapi.pod pod/perlbook.pod pod/perldata.pod pod/perlform.pod pod/perlfunc.pod pod/perlipc.pod pod/perlmod.pod pod/perlobj.pod pod/perlref.pod pod/perlrun.pod pod/perlsec.pod pod/perlsub.pod pod/perltrap.pod pod/perlvar.pod
2176 NETaa13589: return was enforcing list context on its arguments
2178 Files patched: opcode.pl
2179 A return was being treated like a normal list operator, in that it was
2180 setting list context on its arguments. This was bogus.
2182 NETaa13591: POSIX::creat used wrong argument
2184 Files patched: ext/POSIX/POSIX.pm
2185 Applied suggested patch.
2187 NETaa13605: use strict refs error message now displays bad ref
2189 Files patched: perl.h pod/perldiag.pod pp.c pp_hot.c
2192 Can't use string ("2") as a HASH ref while "strict refs" in use at ./foo line 12.
2194 NETaa13630: eof docs were unclear
2195 From: Hallvard B Furuseth
2196 Files patched: pod/perlfunc.pod
2197 Applied suggested patch.
2199 NETaa13636: $< and $> weren't refetched on undump restart
2200 From: Steve Pearlmutter
2201 Files patched: perl.c
2202 The code in main() bypassed perl_construct on an undump restart, which bypassed
2203 the code that set $< and $>.
2205 NETaa13641: added Tim's fancy new import whizbangers
2207 Files patched: lib/Exporter.pm
2208 Applied suggested patch.
2210 NETaa13649: couldn't AUTOLOAD a symbol reference
2212 Files patched: pp_hot.c
2213 pp_entersub needed to guarantee a CV so it would get to the AUTOLOAD code.
2215 NETaa13651: renamed file had wrong package name
2216 From: Andreas Koenig
2217 Files patched: lib/File/Path.pm
2218 Applied suggested patch.
2220 NETaa13660: now that we're testing distribution we can diagnose RANDBITS errors
2221 From: Karl Glazebrook
2222 Files patched: t/op/rand.t
2223 Changed to suggested algorithm. Also duplicated it to test rand(100) too.
2225 NETaa13660: rand.t didn't test for proper distribution within range
2226 Files patched: t/op/rand.t
2229 NETaa13671: array slice misbehaved in a scalar context
2232 A spurious else prevented the scalar-context-handling code from running.
2234 NETaa13672: filehandle constructors in POSIX don't return failure successfully
2236 Files patched: ext/POSIX/POSIX.pm
2237 Applied suggested patch.
2240 NETaa13678: forced $1 to always be untainted
2243 I believe the bug that triggered this was fixed elsewhere, but just in case,
2244 I put in explicit code to force $1 et al not to be tainted regardless.
2246 NETaa13682: formline doc need to discuss ~ and ~~ policy
2248 Files patched: pod/perlfunc.pod
2250 NETaa13686: POSIX::open and POSIX::mkfifo didn't check tainting
2252 Files patched: ext/POSIX/POSIX.xs
2253 open() and mkfifo() now check tainting.
2255 NETaa13687: new Exporter.pm
2257 Files patched: lib/Exporter.pm
2258 Added suggested changes, except for @EXPORTABLE, because it looks too much
2259 like @EXPORTTABLE. Decided to stick with @EXPORT_OK because it looks more
2260 like an adjunct. Also added an export_tags routine. The keys in the
2261 %EXPORT_TAGS hash no longer use colons, to make the initializers prettier.
2263 NETaa13687: new Exporter.pm
2264 Files patched: ext/POSIX/POSIX.pm
2267 NETaa13694: add sockaddr_in to Socket.pm
2269 Files patched: ext/Socket/Socket.pm
2270 Applied suggested patch.
2272 NETaa13695: library routines should use qw() as good example
2274 Files patched: ext/DB_File/DB_File.pm ext/DynaLoader/DynaLoader.pm ext/Fcntl/Fcntl.pm ext/GDBM_File/GDBM_File.pm ext/POSIX/POSIX.pm ext/Socket/Socket.pm
2275 Applied suggested patch.
2277 NETaa13696: myconfig should be a routine in Config.pm
2278 From: Kenneth Albanowski
2279 Files patched: configpm
2280 Applied suggested patch.
2282 NETaa13704: fdopen closed fd on failure
2283 From: Hallvard B Furuseth
2284 Files patched: doio.c
2285 Applied suggested patch.
2287 NETaa13706: Term::Cap doesn't work
2289 Files patched: lib/Term/Cap.pm
2290 Applied suggested patch.
2292 NETaa13710: cryptswitch needed to be more "useable"
2294 Files patched: embed.h global.sym perl.h toke.c
2295 The cryptswitch_fp function now can operate in two modes. It can
2296 modify the global rsfp to redirect input as before, or it can modify
2297 linestr and return true, indicating that it is not necessary for yylex
2298 to read another line since cryptswitch_fp has just done it.
2300 NETaa13712: new_tmpfile() can't be called as constructor
2302 Files patched: ext/POSIX/POSIX.xs
2303 Now allows new_tmpfile() to be called as a constructor.
2305 NETaa13714: variable method call not documented
2306 From: "Randal L. Schwartz"
2307 Files patched: pod/perlobj.pod
2308 Now indicates that OBJECT->$method() works.
2310 NETaa13715: PACK->$method produces spurious warning
2312 Files patched: toke.c
2313 The -> operator was telling the lexer to expect an operator when the
2314 next thing was a variable.
2316 NETaa13716: Carp now allows multiple packages to be skipped out of
2318 Files patched: lib/Carp.pm
2319 The subroutine redefinition warnings now warn on import collisions.
2321 NETaa13716: Exporter catches warnings and gives a better line number
2322 Files patched: lib/Exporter.pm
2325 NETaa13716: now counts imported routines as "defined" for redef warnings
2326 Files patched: op.c sv.c
2335 The -w switch is much more informative.
2337 References. See t/op/ref.t for examples. All entities in Perl 5 are
2338 reference counted so that it knows when each item should be destroyed.
2340 Objects. See t/op/ref.t for examples.
2342 => is now a synonym for comma. This is useful as documentation for
2343 arguments that come in pairs, such as initializers for associative arrays,
2344 or named arguments to a subroutine.
2346 All functions have been turned into list operators or unary operators,
2347 meaning the parens are optional. Even subroutines may be called as
2348 list operators if they've already been declared.
2350 More embeddible. See main.c and embed_h.sh. Multiple interpreters
2351 in the same process are supported (though not with interleaved
2354 The interpreter is now flattened out. Compare Perl 4's eval.c with
2355 the perl 5's pp.c. Compare Perl 4's 900 line interpreter loop in cmd.c
2356 with Perl 5's 1 line interpreter loop in run.c. Eventually we'll make
2357 everything non-blocking so we can interface nicely with a scheduler.
2359 eval is now treated more like a subroutine call. Among other things,
2360 this means you can return from it.
2362 Format value lists may be spread over multiple lines by enclosing in
2365 You may now define BEGIN and END subroutines for each package. The BEGIN
2366 subroutine executes the moment it's parsed. The END subroutine executes
2367 just before exiting.
2369 Flags on the #! line are interpreted even if the script wasn't
2370 executed directly. (And even if the script was located by "perl -x"!)
2372 The ?: operator is now legal as an lvalue.
2374 List context now propagates to the right side of && and ||, as well
2375 as the 2nd and 3rd arguments to ?:.
2377 The "defined" function can now take a general expression.
2379 Lexical scoping available via "my". eval can see the current lexical
2382 The preferred package delimiter is now :: rather than '.
2384 tie/untie are now preferred to dbmopen/dbmclose. Multiple DBM
2385 implementations are allowed in the same executable, so you can
2386 write scripts to interchange data among different formats.
2388 New "and" and "or" operators work just like && and || but with
2389 a precedence lower than comma, so they work better with list operators.
2391 New functions include: abs(), chr(), uc(), ucfirst(), lc(), lcfirst(),
2394 require with a number checks to see that the version of Perl that is
2395 currently running is at least that number.
2397 Dynamic loading of external modules is now supported.
2399 There is a new quote form qw//, which is equivalent to split(' ', q//).
2401 Assignment of a reference to a glob value now just replaces the
2402 single element of the glob corresponding to the reference type:
2403 *foo = \$bar, *foo = \&bletch;
2405 Filehandle methods are now supported:
2406 output_autoflush STDOUT 1;
2408 There is now an "English" module that provides human readable translations
2409 for cryptic variable names.
2411 Autoload stubs can now call the replacement subroutine with goto &realsub.
2413 Subroutines can be defined lazily in any package by declaring an AUTOLOAD
2414 routine, which will be called if a non-existent subroutine is called in
2417 Several previously added features have been subsumed under the new
2418 keywords "use" and "no". Saying "use Module LIST" is short for
2419 BEGIN { require Module; import Module LIST; }
2420 The "no" keyword is identical except that it calls "unimport" instead.
2421 The earlier pragma mechanism now uses this mechanism, and two new
2422 modules have been added to the library to implement "use integer"
2423 and variations of "use strict vars, refs, subs".
2425 Variables may now be interpolated literally into a pattern by prefixing
2426 them with \Q, which works just like \U, but backwhacks non-alphanumerics
2427 instead. There is also a corresponding quotemeta function.
2429 Any quantifier in a regular expression may now be followed by a ? to
2430 indicate that the pattern is supposed to match as little as possible.
2432 Pattern matches may now be followed by an m or s modifier to explicitly
2433 request multiline or singleline semantics. An s modifier makes . match
2436 Patterns may now contain \A to match only at the beginning of the string,
2437 and \Z to match only at the end. These differ from ^ and $ in that
2438 they ignore multiline semantics. In addition, \G matches where the
2439 last interation of m//g or s///g left off.
2441 Non-backreference-producing parens of various sorts may now be
2442 indicated by placing a ? directly after the opening parenthesis,
2443 followed by a character that indicates the purpose of the parens.
2444 An :, for instance, indicates simple grouping. (?:a|b|c) will
2445 match any of a, b or c without producing a backreference. It does
2446 "eat" the input. There are also assertions which do not eat the
2447 input but do lookahead for you. (?=stuff) indicates that the next
2448 thing must be "stuff". (?!nonsense) indicates that the next thing
2449 must not be "nonsense".
2451 The negation operator now treats non-numeric strings specially.
2452 A -"text" is turned into "-text", so that -bareword is the same
2453 as "-bareword". If the string already begins with a + or -, it
2454 is flipped to the other sign.
2458 @ now always interpolates an array in double-quotish strings. Some programs
2459 may now need to use backslash to protect any @ that shouldn't interpolate.
2461 Ordinary variables starting with underscore are no longer forced into
2464 s'$lhs'$rhs' now does no interpolation on either side. It used to
2465 interplolate $lhs but not $rhs.
2467 The second and third arguments of splice are now evaluated in scalar
2468 context (like the book says) rather than list context.
2470 Saying "shift @foo + 20" is now a semantic error because of precedence.
2472 "open FOO || die" is now incorrect. You need parens around the filehandle.
2474 The elements of argument lists for formats are now evaluated in list
2475 context. This means you can interpolate list values now.
2477 You can't do a goto into a block that is optimized away. Darn.
2479 It is no longer syntactically legal to use whitespace as the name
2480 of a variable, or as a delimiter for any kind of quote construct.
2482 Some error messages will be different.
2484 The caller function now returns a false value in a scalar context if there
2485 is no caller. This lets library files determine if they're being required.
2487 m//g now attaches its state to the searched string rather than the
2490 "reverse" is no longer allowed as the name of a sort subroutine.
2492 taintperl is no longer a separate executable. There is now a -T
2493 switch to turn on tainting when it isn't turned on automatically.
2495 Symbols starting with _ are no longer forced into package main, except
2496 for $_ itself (and @_, etc.).
2498 Double-quoted strings may no longer end with an unescaped $ or @.
2500 Negative array subscripts now count from the end of the array.
2502 The comma operator in a scalar context is now guaranteed to give a
2503 scalar context to its arguments.
2505 The ** operator now binds more tightly than unary minus.
2507 Setting $#array lower now discards array elements so that destructors
2510 delete is not guaranteed to return the old value for tied arrays,
2511 since this capability may be onerous for some modules to implement.
2513 Attempts to set $1 through $9 now result in a run-time error.