Use PERL=../miniperl
[p5sagit/p5-mst-13.2.git] / Changes
CommitLineData
748a9306 1-------------
4633a7c4 2Version 5.002
3-------------
4
5Nearly all the changes for 5.001 were bug fixes of one variety or another,
6so here's the bug list, along with the "resolution" for each of them. If
7you wish to correspond about any of them, please include the bug number.
8
9Added APPLLIB_EXP for embedded perl library support.
10Files patched: perl.c
11
12Couldn't define autoloaded routine by assignment to typeglob.
13Files patched: pp_hot.c sv.c
14
15NETaa13399: Andy patches.
16From: Larry Wall
17Files patched: MANIFEST
18
19NETaa13399: Andy's patch 1m
20Files 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
26
27NETaa13399: Andy's patch.1l
28Files 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
58
59NETaa13399: Jumbo Configure patch (and patch 1)
60Files patched: Changes.Conf
61
62NETaa13399: Jumbo Configure patch (and patch 1)
63Files 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
68
69NETaa13399: Jumbo Configure patch (patches 2 and 3)
70Files 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
72
73NETaa13525: doc changes
74From: Larry Wall
75Files patched: pod/perlop.pod pod/perltrap.pod
76
77NETaa13525: random cleanup
78Files 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
85
86NETaa13540: VMS stuff
87From: Larry Wall
88Files 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
96 vms/vmsish.h
97
98NETaa13540: VMS uses CLK_TCK for HZ
99Files patched: pp_sys.c
100
101NETaa13721: pad_findlex core dumps on bad CvOUTSIDE()
102From: Carl Witty
103Files 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
107 of SV.
108
109NETaa13721: warning suppression
110Files patched: toke.c
111 (same)
112
113NETaa13722: walk.c had inconsistent static declarations
114From: Tim Bunce
115Files patched: x2p/walk.c
116 Consolidated the various declarations and made them consistent with
117 the actual definitions.
118
119NETaa13729: order-of-evaluation dependency in scope.c on leaving REGCONTEXT
120From: "Jason Shirk"
121Files patched: scope.c
122 Did
123
124 I32 delta = SSPOPINT;
125 savestack_ix -= delta; /* regexp must have croaked */
126
127 instead.
128
129NETaa13731: couldn't assign external lexical array to itself
130From: oneill@cs.sfu.ca
131Files patched: op.c
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
141 destroys the values.
142
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
147 that.
148
149NETaa13733: s/// doesn't free old string when using copy mode
150From: Larry Wall
151Files patched: pp_ctl.c pp_hot.c
152 When I removed the use of sv_replace(), I simply forgot to free the old char*.
153
154NETaa13736: closures leaked memory
155From: Carl Witty
156Files 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.
159
160NETaa13739: XSUB interface caches gimme in case XSUB clobbers it
161From: Dean Roehrich
162Files patched: pp_hot.c
163 Applied suggest patch. Also deleted second gimme declaration as redundant.
164
165NETaa13760: comppad reference counts were inconsistent
166From: Larry Wall
167Files 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.
170
171NETaa13761: sv_2pv() wrongly preferred IV to NV when SV was readonly
172From: "Jack R. Lawler"
173Files patched: sv.c
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
182 just said
183
184 print 1.4142135623731;
185
186 because in that case, there was already a string value.
187
188
189NETaa13772: shmwrite core dumps consistently
190From: Gabe Schaffer
191Files 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.
194
195NETaa13773: $. was misdocumented as read-only.
196From: Inaba Hiroto
197Files 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'
202 1, 1, 1, 1, 1, 1
203
204 This one may stay the way it is for performance reasons.
205
206 <2.begin-local-RS>
207 % cat abc
208 a
209 b
210 c
211 % perl -e 'BEGIN { local $/ = ""; } print "$.:$_" while <>;' abc
212 1:a
213 b
214 c
215 % perl -e '{ local $/ = ""; } print "$.:$_" while <>;' abc
216 1:a
217 2:b
218 3:c
219
220 $/ wasn't initialized early enough, so local set it back to permanently
221 undefined on exit from the block.
222
223 <3.grep-x0-bug>
224 % perl -le 'print grep(/^-/ ? ($x=$_) x 0 : 1, "a", "-b", "c");'
225 a
226
227 % perl4 -le 'print grep(/^-/ ? ($x=$_) x 0 : 1, "a", "-b", "c");'
228 ac
229
230 An extra mark was left on the stack if (('x') x $repeat) was used in a scalar
231 context.
232
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."
236 % cat abc
237 a
238 b
239 c
240 % perl -wnle '$. = 10 if $. == 2; print "$.:$_"' abc
241 1:a
242 10:b
243 11:c
244
245 Fixed doc.
246
247 <5.local-soft-ref.bug>
248 % perl -e 'local ${"a"}=1;'
249 zsh: 529 segmentation fault perl -e 'local ${"a"}=1;'
250
251 Now says
252 Can't localize a reference at -e line 1.
253
254 <6.package-readline>
255 % perl -e 'package foo; sub foo { 1; } package main; $_ = foo::foo(); print'
256 1
257 % perl -e '
258 package readline; sub foo { 1; } package main; $_ = readline::foo(); print'
259 Undefined subroutine &main::foo called at -e line 1.
260 % perl -e '
261 package readline; sub foo { 1; } package main; $_ = &readline::foo(); print'
262 1
263
264 Now treats foo::bar correctly even if foo is a keyword.
265
266 <7.page-head-set-to-null-string>
267 % cat page-head
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>
273
274 select((select(STDOUT), $^='')[0]); #this is the critical line
275 $a = 'a';
276 write ;
277 exit;
278
279 format STDOUT =
280 @<<<<<<
281 $a
282 .
283
284 % perl page-head
285 zsh: 1799 segmentation fault perl /tmp/page-head
286
287 Now says
288 Undefined top format "main::" called at ./try line 11.
289
290 <8.sub-as-index>
291 # parser bug?
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'
295
296 A right square bracket now forces expectation of an operator.
297
298 <9.unary-minus-to-regexp-var>
299 % cat minus-reg
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>
305
306 $_ = "123";
307 /\d+/;
308 print $&, "\n";
309 print -$&, "\n";
310 print 0-$&, "\n";
311
312 % perl minus-reg
313 123
314 123
315 -123
316
317 Apparently already fixed in my copy.
318
319 <10.vec-segv>
320 % cat vec-bug
321 ## Offset values are changed for my machine.
322
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
327
328 #The following two statements each produce a segmentation fault in perl5:
329
330 #vec($a, 21406, 32) = 1; # seg fault
331 vec($a, 42813, 16) = 1; # seg fault
332
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
336
337 #Interestingly, this is ok for all high values of N:
338 #$N=1000000; vec($a, $N, 8) = 1;
339
340 % perl vec-bug
341 zsh: 1806 segmentation fault perl vec-bug
342
343 Can't reproduce this one.
344
345
346NETaa13773: $/ not correctly localized in BEGIN
347Files patched: perl.c
348 (same)
349
350NETaa13773: foo::bar was misparsed if foo was a reserved word
351Files patched: toke.c toke.c
352 (same)
353
354NETaa13773: right square bracket didn't force expectation of operator
355Files patched: toke.c
356 (same)
357
358NETaa13773: scalar ((x) x $repeat) left stack mark
359Files patched: op.c
360 (same)
361
362NETaa13778: -w coredumps on <$>
363From: Hans Mulder
364Files patched: pp_hot.c toke.c
365 Now produces suggested error message. Also installed guard in warning code
366 that coredumped.
367
368NETaa13779: foreach didn't use savestack mechanism
369From: Hans Mulder
370Files 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.
374
375NETaa13785: GIMME sometimes used wrong context frame
376From: Greg Earle
377Files 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.
380
381NETaa13794: TieHash produces ${pack} warnings
382From: Stanley Donald Capelik x74321 24-5200 021876
383Files patched: lib/TieHash.pm
384 Changed $pack to $pkg.
385
386NETaa13797: could modify sv_undef through auto-vivification
387From: Ilya Zakharevich
388Files patched: pp.c
389 Inserted the missing check for readonly values on auto-vivification.
390
391NETaa13798: if (...) {print} treats print as quoted
392From: Larry Wall
393Files 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}.
396
397NETaa13926: commonality was not detected in assignments using COND_EXPR
398From: Mark Hanson
399Files 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.
403
404NETaa13957: was marking the PUSHMARK as modifiable rather than the arg
405From: David Couture
406Files patched: op.c sv.c
407 It was marking the PUSHMARK as modifiable rather than the arg.
408
409NETaa13962: documentation of behavior of scalar <*> was unclear
410From: Tom Christiansen
411Files patched: pod/perlop.pod
412 Added the following to perlop:
413
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
421
422 ($file) = <blurch*>;
423
424 than
425
426 $file = <blurch*>;
427
428 because the latter will alternate between returning a filename and
429 returning FALSE.
430
431
432NETaa13992: regexp comments not seen after + in non-extended regexp
433From: Mark Knutsen
434Files 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.
437
438NETaa14014: use subs should not count as definition, only as declaration
439From: Keith Thompson
440Files patched: sv.c
441 On *foo = \&bar, doesn't set GVf_IMPORTED if foo and bar are in same package.
442
443NETaa14021: sv_inc and sv_dec "upgraded" magical SV to non-magical
444From: Paul A Sand
445Also: Andreas Koenig
446Files patched: sv.c
447 The sv_inc() and sv_dec() routines "upgraded" null magical SVs to non-magical.
448
449NETaa14086: require should check tainting
450From: Karl Simon Berg
451Files patched: pp_ctl.c
452 Since we shouldn't allow tainted requires anyway, it now says:
453
454 Insecure dependency in require while running with -T switch at tst.pl line 1.
455
456NETaa14104: negation fails on magical variables like $1
457From: tim
458Files patched: pp.c
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.
461
462NETaa14107: deep sort return leaked contexts
463From: Quentin Fennessy
464Files patched: pp_ctl.c
465 Needed to call dounwind() appropriately.
466
467NETaa14129: attempt to localize via a reference core dumps
468From: Michele Sardo
469Files patched: op.c pod/perldiag.pod
470 Now produces an error "Can't localize a reference", with explanation in
471 perldiag.
472
473NETaa14138: substr() and s/// can cause core dump
474From: Andrew Vignaux
475Files patched: pp_hot.c
476 Forgot to call SvOOK_off() on the SV before freeing its string.
477
478NETaa14145: ${@INC}[0] dumped core in debugger
479From: Hans Mulder
480Files patched: sv.c
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
483 is a different bug.
484
485NETaa14147: bitwise assignment ops wipe out byte of target string
486From: Jim Richardson
487Files 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.
490
491NETaa14153: lexing of lexicals in patterns fooled by character class
492From: Dave Bianchi
493Files patched: toke.c
494 It never called the dwimmer, which is how it fooled it.
495
496NETaa14154: allowed autoloaded methods by recognizing sub method; declaration
497From: Larry Wall
498Files patched: gv.c
499 Made sub method declaration sufficient for autoloader to stop searching on.
500
501NETaa14156: shouldn't optimize block scope on tainting
502From: Pete Peterson
503Files patched: op.c toke.c
504 I totally disabled the block scope optimization when running tainted.
505
506NETaa14157: -T and -B only allowed 1/30 "odd" characters--changed to 1/3
507From: Tor Lillqvist
508Files patched: pp_sys.c
509 Applied suggested patch.
510
511NETaa14160: deref of null symbol should produce null list
512From: Jared Rhine
513Files patched: pp_hot.c
514 It didn't check for list context before returning undef.
515
516NETaa14162: POSIX::gensym now returns a symbol reference
517From: Josh N. Pritikin
518Also: Tim Bunce
519Files patched: ext/POSIX/POSIX.pm
520 Applied suggested patch.
521
522NETaa14164: POSIX autoloader now distinguishes non-constant "constants"
523From: Tim Bunce <Tim.Bunce@ig.co.uk>
524Files 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
528 an argument.
529
530NETaa14166: missing semicolon after "my" induces core dump
531From: Thomas Kofler
532Files 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.
535
536NETaa14166: missing semicolon after "my" induces core dump"
537Files patched: toke.c
538 (same)
539
540NETaa14206: can now use English and strict at the same time
541From: Andrew Wilcox
542Files patched: sv.c
543 It now counts imported symbols as okay under "use strict".
544
545NETaa14206: can now use English and strict at the same time
546Files patched: gv.c pod/perldiag.pod
547 (same)
548
549NETaa14265: elseif now produces severe warning
550From: Yutao Feng
551Files patched: pod/perldiag.pod toke.c
552 Now complains explicitly about "elseif".
553
554NETaa14279: list assignment propagated taintedness to independent scalars
555From: Tim Freeman
556Files patched: pp_hot.c
557 List assignment needed to be modified so that tainting didn't propagate
558 between independent scalar values.
559
560NETaa14312: undef in @EXPORTS core dumps
561From: William Setzer
562Files patched: lib/Exporter.pm
563 Now says:
564
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.
568
569
570NETaa14312: undef in @EXPORTS core dumps
571Files patched: pod/perldiag.pod sv.c
572 (same)
573
574NETaa14321: literal @array check shouldn't happen inside embedded expressions
575From: Mark H. Nodine
576Files 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:
579
580 print "$foo{@foo}";
581
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.
585
586NETaa14322: now localizes $! during POSIX::AUTOLOAD
587From: Larry Wall
588Files patched: ext/POSIX/POSIX.pm
589 Added local $! = 0.
590
591NETaa14324: defined() causes spurious sub existence
592From: "Andreas Koenig"
593Files patched: op.c pp.c
594 It called pp_rv2cv which wrongly assumed it could add any sub it referenced.
595
596NETaa14336: use Module () forces import of nothing
597From: Tim Bunce
598Files patched: op.c
599 use Module () now refrains from calling import at all.
600
601NETaa14353: added special HE allocator
602From: Larry Wall
603Files patched: global.sym
604
605NETaa14353: added special HE allocator
606Files patched: hv.c perl.h
607
608NETaa14353: array extension now converts old memory to SV storage.
609Files patched: av.c av.h sv.c
610
611NETaa14353: hashes now convert old storage into SV arenas.
612Files patched: global.sym
613
614NETaa14353: hashes now convert old storage into SV arenas.
615Files patched: hv.c perl.h
616
617NETaa14353: upgraded SV arena allocation
618Files patched: proto.h
619
620NETaa14353: upgraded SV arena allocation
621Files patched: perl.c sv.c
622
623NETaa14422: added rudimentary prototypes
624From: Gisle Aas
625Files 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)
632
633 : No. Larry's currently got the patch pumpkin for all such core perl topics.
634
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. :-)
637
638 We can now define true unary subroutines, as well as argumentless
639 subroutines:
640
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";
645
646 This prints "42 is the answer" on my machine. That is, it's the same as
647
648 foo( bar( baz() / 2) || "oops", "is the answer");
649
650 Attempting to compile
651
652 foo;
653
654 results in
655
656 Too few arguments for main::foo at ./try line 8, near "foo;"
657
658 Compiling
659
660 bar 1,2,3;
661
662 results in
663
664 Too many arguments for main::bar at ./try line 8, near "foo;"
665
666 But
667
668 @array = ('a','b','c');
669 foo @array, @array;
670
671 prints "3 a b c" because the $ puts the first arg of foo into scalar context.
672
673 The main win at this point is that we can say
674
675 sub AAA () { 1; }
676 sub BBB () { 2; }
677
678 and the user can say AAA + BBB and get 3.
679
680 I'm not quite sure how this interacts with autoloading though. I fear
681 POSIX.pm will need to say
682
683 sub E2BIG ();
684 sub EACCES ();
685 sub EAGAIN ();
686 sub EBADF ();
687 sub EBUSY ();
688 ...
689 sub _SC_STREAM_MAX ();
690 sub _SC_TZNAME_MAX ();
691 sub _SC_VERSION ();
692
693 unless we can figure out how to efficiently declare a default prototype
694 at import time. Meaning, not using eval. Currently
695
696 *foo = \&bar;
697
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.
701
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.
704
705 And no, I don't want to have the
706
707 sub howabout ($formal, @arguments) { ... }
708
709 argument right now.
710
711 Larry
712
713NETaa14444: lexical scalar didn't autovivify
714From: Gurusamy Sarathy
715Files patched: op.c pp_hot.c
716 It didn't have code in pp_padsv to do the right thing.
717
718NETaa14448: caller could dump core when used within an eval or require
719From: Danny R. Faught
720Files 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.
723
724NETaa14451: improved error message on bad pipe filehandle
725From: Danny R. Faught
726Files patched: pp_sys.c
727 Now says the slightly more informative
728
729 Can't use an undefined value as filehandle reference at ./try line 3.
730
731NETaa14462: pp_dbstate had a scope leakage on recursion suppression
732From: Tim Bunce
733Files patched: pp_ctl.c
734 Swapped the code in question around.
735
736NETaa14482: sv_unref freed ref prematurely at times
737From: Gurusamy Sarathy
738Files patched: sv.c
739 Made sv_unref() mortalize rather than free the old reference.
740
741NETaa14484: appending string to array produced bizarre results
742From: Greg Ward
743Also: Malcolm Beattie
744Files patched: pp_hot.c
745 Will now say, "Can't coerce ARRAY to string".
746
747NETaa14525: assignment to globs didn't reset them correctly
748From: Gurusamy Sarathy
749Files patched: sv.c
750 Applied parts of patch not overridden by subsequent patch.
751
752NETaa14529: a partially matching subpattern could spoof infinity detector
753From: Wayne Berke
754Files 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.
760
761NETaa14535: patches from Gurusamy Sarathy
762From: Gurusamy Sarathy
763Files patched: op.c pp.c pp_hot.c regexec.c sv.c toke.c
764 Applied most recent suggested patches.
765
766NETaa14538: method calls were treated like do {} under loop modifiers
767From: Ilya Zakharevich
768Files 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.)
771
772NETaa14540: foreach (@array) no longer does extra stack copy
773From: darrinm@lmc.com
774Files 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
777 referencing <>.
778
779NETaa14548: magic sets didn't check private OK bits
780From: W. Bradley Rubenstein
781Files patched: mg.c
782 The magic code was getting mixed up between private and public POK bits.
783
784NETaa14550: made ~ magic magical
785From: Tim Bunce
786Files patched: sv.c
787 Applied suggested patch.
788
789NETaa14551: humongous header causes infinite loop in format
790From: Grace Lee
791Files patched: pp_sys.c
792 Needed to check for page exhaustion after doing top-of-form.
793
794NETaa14558: attempt to call undefined top format core dumped
795From: Hallvard B Furuseth
796Files patched: pod/perldiag.pod pp_sys.c
797 Now issues an error on attempts to call a non-existent top format.
798
799NETaa14561: Gurusamy Sarathy's G_KEEPERR patch
800From: Andreas Koenig
801Also: Gurusamy Sarathy
802Also: Tim Bunce
803Files patched: cop.h interp.sym perl.c perl.h pp_ctl.c pp_sys.c sv.c toke.c
804 Applied latest patch.
805
806NETaa14581: shouldn't execute BEGIN when there are compilation errors
807From: Rickard Westman
808Files patched: op.c
809 Perl should not try to execute BEGIN and END blocks if there's been a
810 compilation error.
811
812NETaa14582: got SEGV sorting sparse array
813From: Rick Pluta
814Files patched: pp_ctl.c
815 Now weeds out undefined values much like Perl 4 did.
816 Now sorts undefined values to the front.
817
818NETaa14582: sort was letting unsortable values through to comparison routine
819Files patched: pp_ctl.c
820 (same)
821
822NETaa14614: now does dbmopen with perl_eval_sv()
823From: The Man
824Files patched: perl.c pp_sys.c proto.h
825 dbmopen now invokes perl_eval_sv(), which should handle error conditions
826 better.
827
828NETaa14636: Jumbo Dynaloader patch
829From: Tim Bunce
830Files 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.
834
835NETaa14637: checkcomma routine was stupid about bareword sub calls
836From: Tim Bunce <Tim.Bunce@ig.co.uk>
837Files patched: toke.c
838 The checkcomma routine was stupid about bareword sub calls.
839
840NETaa14639: (?i) didn't reset on runtime patterns
841From: Mark A. Scheel
842Files 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.
845
846NETaa14649: selecting anonymous globs dumps core
847From: Chip Salzenberg
848Files 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.
851
852NETaa14655: $? returned negative value on AIX
853From: Kim Frutiger
854Also: Stephen D. Lee
855Files patched: pp_sys.c
856 Applied suggested patch.
857
858NETaa14658: infinite loop in c2ph
859From: Nick Gianniotis
860Files patched: c2ph.SH
861 Applied suggested patch.
862
863NETaa14668: {2,} could match once
864From: Hugo van der Sanden
865Files 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.
868
869NETaa14673: open $undefined dumped core
870From: Samuli K{rkk{inen
871Files patched: pp_sys.c
872 pp_open() didn't check its argument for globness.
873
874NETaa14683: stringifies were running pad out of space
875From: Robin Barker
876Files 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.
879
880NETaa14689: shouldn't have . in @INC when tainting
881From: William R. Somsky
882Files patched: perl.c
883 Now does not put . into @INC when tainting. It may still be added with a
884
885 use lib ".";
886
887 or, to put it at the end,
888
889 BEGIN { push(@INC, ".") }
890
891 but this is not recommended unless a chdir to a known location has been done
892 first.
893
894NETaa14690: values inside tainted SVs were ignored
895From: "James M. Stern"
896Files patched: pp.c pp_ctl.c
897 It was assuming that a tainted value was a string.
898
899NETaa14692: format name required qualification under use strict
900From: Tom Christiansen
901Files patched: gv.c
902 Now treats format names the same as subroutine names.
903
904NETaa14695: added simple regexp caching
905From: John Rowe
906Files patched: pp_ctl.c
907 Applied suggested patch.
908
909NETaa14697: regexp comments were sometimes wrongly treated as literal text
910From: Tom Christiansen
911Files patched: regcomp.c
912 The literal-character grabber didn't know about extended comments.
913
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.)
916
917NETaa14704: closure got wrong outer scope if outer sub was predeclared
918From: Marc Paquette
919Files patched: op.c
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.
923
924NETaa14705: $foo .= $foo did free memory read
925From: Gerd Knops
926Files patched: sv.c
927 Now modifies address to copy if it was reallocated.
928
929NETaa14711: added (&) and (*) prototypes for blocks and symbols
930From: Kenneth Albanowski
931Files 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 (&@).
935
936 Also added * so you can do things like
937
938 sub myopen (*;$);
939
940 myopen(FOO, $filename);
941
942NETaa14713: setuid FROM root now defaults to not do tainting
943From: Tony Camas
944Files patched: mg.c perl.c pp_hot.c
945 Applied suggested patch.
946
947NETaa14714: duplicate magics could be added to an SV
948From: Yary Hluchan
949Files 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.
953
954NETaa14734: ref should never return undef
955From: Dale Amon
956Files patched: pp.c t/op/overload.t
957 Now returns null string.
958
959NETaa14751: slice of undefs now returns null list
960From: Tim Bunce
961Files patched: pp.c pp_hot.c
962 Null list clobberation is now done in lslice, not aassign.
963
964NETaa14789: select coredumped on Linux
965From: Ulrich Kunitz
966Files patched: pp_sys.c
967 Applied suggested patches, more or less.
968
969NETaa14789: straightened out ins and out of duping
970Files patched: lib/IPC/Open3.pm
971 (same)
972
973NETaa14791: implemented internal SUPER class
974From: Nick Ing-Simmons
975Also: Dean Roehrich
976Files patched: gv.c
977 Applied suggested patch.
978
979NETaa14845: s/// didn't handle offset strings
980From: Ken MacLeod
981Files patched: pp_ctl.c
982 Needed a call to SvOOK_off(targ) in pp_substcont().
983
984NETaa14851: Use of << to mean <<"" is deprecated
985From: Larry Wall
986Files patched: toke.c
987
988NETaa14865: added HINT_BLOCK_SCOPE to "elsif"
989From: Jim Avera
990Files 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.
994
995NETaa14876: couldn't delete localized GV safely
996From: John Hughes
997Files 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.
1000
1001NETaa14887: couldn't negate magical scalars
1002From: ian
1003Also: Gurusamy Sarathy
1004Files patched: pp.c
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
1007 bits are set.)
1008
1009NETaa14893: /m modifier was sticky
1010From: Jim Avera
1011Files 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.
1014
1015NETaa14893: /m modifier was sticky
1016Files patched: cop.h pp_hot.c
1017 (same)
1018
1019Needed to make install paths absolute.
1020Files patched: installperl
1021
1022derived it
1023Files patched: perly.h
1024
1025makedir() looped on a symlink to a directory.
1026Files patched: installperl
1027
1028
1029-------------
748a9306 1030Version 5.001
1031-------------
1032
1033Nearly all the changes for 5.001 were bug fixes of one variety or another,
1034so here's the bug list, along with the "resolution" for each of them. If
1035you wish to correspond about any of them, please include the bug number.
1036
1037There 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)
1047
1048NETaa12974: README incorrectly said it was a pre-release.
1049Files patched: README
1050
1051NETaa13033: goto pushed a bogus scope on the context stack.
1052From: Steve Vinoski
1053Files 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.)
1056
1057NETaa13034: tried to get valid pointer from undef.
1058From: Castor Fu
1059Also: Achille Hui, the Day Dreamer
1060Also: Eric Arnold
1061Files 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.
1064
1065NETaa13035: included package info with filehandles.
1066From: Jack Shirazi - BIU
1067Files patched: pp_hot.c pp_sys.c
1068 Now passes a glob to filehandle methods to keep the package info intact.
1069
1070NETaa13048: didn't give strict vars message on every occurrence.
1071From: Doug Campbell
1072Files patched: gv.c
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.)
1076
1077NETaa13052: test for numeric sort sub return value fooled by taint magic.
1078From: Peter Jaspers-Fayer
1079Files 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.
1083
1084NETaa13053: forced a2p to use byacc
1085From: Andy Dougherty
1086Files patched: MANIFEST x2p/Makefile.SH x2p/a2p.c
1087 a2p.c is now pre-byacced and shipped with the kit.
1088
1089NETaa13055: misnamed constant in previous patch.
1090From: Conrad Augustin
1091Files 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.
1096
1097NETaa13055: use of OPf_SPECIAL for $[ lvaluehood was too fragile.
1098Files patched: op.c op.h toke.c
1099 (same)
1100
1101NETaa13056: convert needs to throw away any number info on its list.
1102From: Jack Shirazi - BIU
1103Files patched: op.c
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.
1107
1108NETaa13058: AUTOLOAD shouldn't assume size of @_ is meaningful.
1109From: Florent Guillaume
1110Files 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.
1113
1114NETaa13059: now warns of use of \1 where $1 is necessary.
1115From: Gustaf Neumann
1116Files patched: toke.c
1117 Now says
1118
1119 Can't use \1 to mean $1 in expression at foo line 2
1120
1121 along with an explanation in perldiag.
1122
1123NETaa13060: no longer warns on attempt to read <> operator's transition state.
1124From: Chaim Frenkel
1125Files patched: pp_hot.c
1126 No longer warns on <> operator's transitional state.
1127
1128NETaa13140: warning said $ when @ would be more appropriate.
1129From: David J. MacKenzie
1130Files patched: op.c pod/perldiag.pod
1131 Now says
1132
1133 (Did you mean $ or @ instead of %?)
1134
1135 and added more explanation to perldiag.
1136
1137NETaa13149: was reading freed memory to make incorrect error message.
1138Files 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
1141 the outer.
1142
1143NETaa13149: confess was sometimes less informative than croak
1144From: Jack Shirazi
1145Files patched: lib/Carp.pm
1146 (same)
1147
1148NETaa13150: stderr needs to be STDERR in package
1149From: Jack Shirazi
1150Files patched: lib/File/CheckTree.pm
1151 Also fixed pl2pm to translate the filehandles to uppercase.
1152
1153NETaa13150: uppercases stdin, stdout and stderr
1154Files patched: pl2pm
1155 (same)
1156
1157NETaa13154: array assignment didn't notice package magic.
1158From: Brian Reichert
1159Files 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.
1163
1164NETaa13155: &DB::DB left trash on the stack.
1165From: Thomas Koenig
1166Files 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 ().
1169
1170NETaa13156: lexical variables didn't show up in debugger evals.
1171From: Joergen Haegg
1172Files patched: op.c
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.)
1180
1181NETaa13157: any request for autoloaded DESTROY should create a null one.
1182From: Tom Christiansen
1183Files patched: lib/AutoLoader.pm
1184 If DESTROY.al is not located, it now creates sub DESTROY {} automatically.
1185
1186NETaa13158: now preserves $@ around destructors while leaving eval.
1187From: Tim Bunce
1188Files patched: pp_ctl.c
1189 Applied supplied patch, except the whole second hunk can be replaced with
1190
1191 sv_insert(errsv, 0, 0, message, strlen(message));
1192
1193NETaa13160: clarified behavior of split without arguments
1194From: Harry Edmon
1195Files patched: pod/perlfunc.pod
1196 Clarified the behavior of split without arguments.
1197
1198NETaa13162: eval {} lost list/scalar context
1199From: Dov Grobgeld
1200Files patched: op.c
1201 LEAVETRY didn't propagate number to ENTERTRY.
1202
1203NETaa13163: clarified documentation of foreach using my variable
1204From: Tom Christiansen
1205Files patched: pod/perlsyn.pod
1206 Explained that foreach using a lexical is still localized.
1207
1208NETaa13164: the dot detector for the end of formats was over-rambunctious.
1209From: John Stoffel
1210Files 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.
1213
1214NETaa13165: do {} while 1 never linked outer block into next chain.
1215From: Gisle Aas
1216Files patched: op.c
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.
1223
1224NETaa13167: coercion was looking at public bits rather than private bits.
1225From: Randal L. Schwartz
1226Also: Thomas Riechmann
1227Also: Shane Castle
1228Files patched: sv.c
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.
1233
1234NETaa13167: had some ifdefs wrong on set*id.
1235Files patched: mg.c pp_hot.c
1236 (same)
1237
1238NETaa13168: relaxed test for comparison of new and old fds
1239From: Casper H.S. Dik
1240Files patched: t/lib/posix.t
1241 I relaxed the comparison to just check that the new fd is greater.
1242
1243NETaa13169: autoincrement can corrupt scalar value state.
1244From: Gisle Aas
1245Also: Tom Christiansen
1246Files patched: sv.c
1247 It assumed a PV didn't need to be upgraded to become an NV.
1248
1249NETaa13169: previous patch could leak a string pointer.
1250Files patched: sv.c
1251 (same)
1252
1253NETaa13170: symbols missing from global.sym
1254From: Tim Bunce
1255Files patched: global.sym
1256 Applied suggested patch.
1257
1258NETaa13171: \\ in <<'END' shouldn't reduce to \.
1259From: Randal L. Schwartz
1260Files patched: toke.c
1261 <<'END' needed to bypass ordinary single-quote processing.
1262
1263NETaa13172: 'use integer' turned off magical autoincrement.
1264From: Erich Rickheit KSC
1265Files patched: pp.c pp_hot.c
1266 The integer versions of the increment and decrement operators were trying too
1267 hard to be efficient.
1268
1269NETaa13172: deleted duplicate increment and decrement code
1270Files patched: opcode.h opcode.pl pp.c
1271 (same)
1272
1273NETaa13173: install should make shared libraries executable.
1274From: Brian Grossman
1275Also: Dave Nadler
1276Also: Eero Pajarre
1277Files patched: installperl
1278 Now gives permission 555 to any file ending with extension specified by $dlext.
1279
1280NETaa13176: ck_rvconst didn't free the const it used up.
1281From: Nick Duffek
1282Files patched: op.c
1283 I checked in many random memory leaks under this bug number, since it
1284 was an eval that brought many of them out.
1285
1286NETaa13176: didn't delete XRV for temp ref of destructor.
1287Files patched: sv.c
1288 (same)
1289
1290NETaa13176: didn't delete op_pmshort in matching operators.
1291Files patched: op.c
1292 (same)
1293
1294NETaa13176: eval leaked the name of the eval.
1295Files patched: scope.c
1296 (same)
1297
1298NETaa13176: gp_free didn't free the format.
1299Files patched: gv.c
1300 (same)
1301
1302NETaa13176: minor leaks in loop exits and constant subscript optimization.
1303Files patched: op.c
1304 (same)
1305
1306NETaa13176: plugged some duplicate struct allocation memory leaks.
1307Files patched: perl.c
1308 (same)
1309
1310NETaa13176: sv_clear of an FM didn't clear anything.
1311Files patched: sv.c
1312 (same)
1313
1314NETaa13176: tr/// didn't mortalize its return value.
1315Files patched: pp.c
1316 (same)
1317
1318NETaa13177: SCOPE optimization hid line number info
1319From: David J. MacKenzie
1320Also: Hallvard B Furuseth
1321Files patched: op.c
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.
1327
1328 Fortunately, null operands remember what they were, so it was pretty easy
1329 to make it set the correct line number anyway.
1330
1331NETaa13178: some linux doesn't handle nm well
1332From: Alan Modra
1333Files patched: hints/linux.sh
1334 Applied supplied patch.
1335
1336NETaa13180: localized slice now pre-extends array
1337From: Larry Schuler
1338Files patched: pp.c
1339 A localized slice now pre-extends its array to avoid reallocation during
1340 the scope of the local.
1341
1342NETaa13181: m//g didn't keep track of whether previous match matched null.
1343From: "philippe.verdret"
1344Files 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
1347 the null string.
1348
1349NETaa13182: now includes whitespace as a regexp metacharacter.
1350From: Larry Wall
1351Files patched: toke.c
1352 scan_const() now counts " \t\n\r\f\v" as metacharacters when scanning a pattern.
1353
1354NETaa13183: sv_setsv shouldn't try to clone an object.
1355From: Peter Gordon
1356Files patched: sv.c
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
1359 cloning objects.
1360
1361NETaa13184: bogus warning on quoted signal handler name removed.
1362From: Dan Carson
1363Files patched: toke.c
1364 Now doesn't complain unless the first non-whitespace character after the =
1365 is an alphabetic character.
1366
1367NETaa13186: now croaks on chop($')
1368From: Casper H.S. Dik
1369Files patched: doop.c
1370 Now croaks on chop($') and such.
1371
1372NETaa13187: "${foo::bar}" now counts as mere delimitation, not as a bareword.
1373From: Jay Rogers
1374Files patched: toke.c
1375 "${foo::bar}" now counts as mere delimitation, not as a bareword inside a
1376 reference block.
1377
1378NETaa13188: for backward compatibility, looks for "perl -" before "perl".
1379From: Russell Mosemann
1380Files patched: toke.c
1381 Now allows non-whitespace characters on the #! line between the "perl"
1382 and the "-".
1383
1384NETaa13188: now allows non-whitespace after #!...perl before switches.
1385Files patched: toke.c
1386 (same)
1387
1388NETaa13189: derivative files need to be removed before recreation
1389From: Simon Leinen
1390Also: Dick Middleton
1391Also: David J. MacKenzie
1392Files patched: embed_h.sh x2p/Makefile.SH
1393 Fixed various little nits as suggested in several messages.
1394
1395NETaa13190: certain assignments can spoof pod directive recognizer
1396From: Ilya Zakharevich
1397Files patched: toke.c
1398 The lexer now only recognizes pod directives where a statement is expected.
1399
1400NETaa13194: now returns undef when there is no curpm.
1401From: lusol@Dillon.CC.Lehigh.EDU
1402Files patched: mg.c
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.
1406
1407NETaa13195: semop had one S too many.
1408From: Joachim Huober
1409Files patched: opcode.pl
1410 The entry in opcode.pl had one too many S's.
1411
1412NETaa13196: always assumes it's a Perl script if -c is used.
1413From: Dan Carson
1414Files patched: toke.c
1415 It now will assume it's a Perl script if the -c switch is used.
1416
1417NETaa13197: changed implicit -> message to be more understandable.
1418From: Bruce Barnett
1419Files patched: op.c pod/perldiag.pod
1420 I changed the error message to be more understandable. It now says
1421
1422 Can't use subscript on sort...
1423
1424
1425NETaa13201: added OPpCONST_ENTERED flag to properly enter filehandle symbols.
1426From: E. Jay Berkenbilt
1427Also: Tom Christiansen
1428Files 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.
1433
1434NETaa13203: README shouldn't mention uperl.o any more.
1435From: Anno Siegel
1436Files patched: README
1437
1438NETaa13204: .= shouldn't warn on uninitialized target.
1439From: Pete Peterson
1440Files patched: pp_hot.c
1441 No longer warns on uninitialized target of .= operator.
1442
1443NETaa13206: handy macros in XSUB.h
1444From: Tim Bunce
1445Files patched: XSUB.h
1446 Added suggested macros.
1447
1448NETaa13228: commonality checker didn't treat lexicals as variables.
1449From: mcook@cognex.com
1450Files 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.
1455
1456NETaa13229: fixed sign stuff for complement, integer coercion.
1457From: Larry Wall
1458Files patched: perl.h pp.c sv.c
1459 Fixed ~0 and integer coercions.
1460
1461NETaa13230: no longer tries to reuse scratchpad temps if tainting in effect.
1462From: Luca Fini
1463Files patched: op.c
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.
1467
1468NETaa13231: *foo = *bar now prevents typo warnings on "foo"
1469From: Robin Barker
1470Files patched: sv.c
1471 Aliasing of the form *foo = *bar is now protected from the typo warnings.
1472 Previously only the *foo = \$bar form was.
1473
1474NETaa13235: require BAREWORD now introduces package name immediately.
1475From: Larry Wall
1476Files 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
1479 yet.
1480
1481NETaa13289: didn't calculate correctly using arybase.
1482From: Jared Rhine
1483Files patched: pp.c pp_hot.c
1484 The runtime code didn't use curcop->cop_arybase correctly.
1485
1486NETaa13301: store now throws exception on error
1487From: Barry Friedman
1488Files 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.
1490
1491NETaa13302: ctime now takes Time_t rather than Time_t*.
1492From: Rodger Anderson
1493Files patched: ext/POSIX/POSIX.xs
1494 Now declares a Time_t and takes the address of that in CODE.
1495
1496NETaa13302: shorter way to do this patch
1497Files patched: ext/POSIX/POSIX.xs
1498 (same)
1499
1500NETaa13304: could feed too large $@ back into croak, whereupon it croaked.
1501From: Larry Wall
1502Files 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.)
1505
1506NETaa13305: compiler misoptimized RHS to outside of s/a/print/e
1507From: Brian S. Cashman <bsc@umich.edu>
1508Files patched: op.c
1509 The syntax tree was being misconstructed because the compiler felt that
1510 the RHS was invariant, so it did it outside the s///.
1511
1512NETaa13314: assigning mortal to lexical leaks
1513From: Larry Wall
1514Files patched: sv.c
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.
1517
1518NETaa13316: wait4pid now recalled when errno == EINTR
1519From: Robert J. Pankratz
1520Files 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.
1523
1524NETaa13329: needed to localize taint magic
1525From: Brian Katzung
1526Files 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
1529 the assignment of
1530
1531 local $foo = $_[0];
1532
1533 when $_[0] is a reference to the variable $foo already.
1534
1535NETaa13341: clarified interaction of AnyDBM_File::ISA and "use"
1536From: Ian Phillipps
1537Files patched: pod/modpods/AnyDBMFile.pod
1538 The doc was misleading.
1539
1540NETaa13342: grep and map with block would enter block but never leave it.
1541From: Ian Phillipps
1542Files patched: op.c
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.
1547
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
1550 or not.
1551
1552NETaa13343: goto needed to longjmp when in a signal handler.
1553From: Robert Partington
1554Files patched: pp_ctl.c
1555 goto needed to longjmp() when in a signal handler to get back into the
1556 right run() context.
1557
1558
1559NETaa13344: strict vars shouldn't apply to globs or filehandles.
1560From: Andrew Wilcox
1561Files patched: gv.c
1562 Filehandles and globs will be excepted from "strict vars", so that you can
1563 do the standard Perl 4 trick of
1564
1565 use strict;
1566 sub foo {
1567 local(*IN);
1568 open(IN,"file");
1569 }
1570
1571
1572NETaa13345: assert.pl didn't use package DB
1573From: Hans Mulder
1574Files patched: lib/assert.pl
1575 Now it does.
1576
1577NETaa13348: av_undef didn't free scalar representing $#foo.
1578From: David Filo
1579Files patched: av.c
1580 av_undef didn't free scalar representing $#foo.
1581
1582NETaa13349: sort sub accumulated save stack entries
1583From: David Filo
1584Files patched: pp_ctl.c
1585 COMMON only gets set if assigning to @_, which is reasonable. Most of the
1586 problem was a memory leak.
1587
1588NETaa13351: didn't treat indirect filehandles as references.
1589From: Andy Dougherty
1590Files patched: op.c
1591 Now produces
1592
1593 Can't use an undefined value as a symbol reference at ./foo line 3.
1594
1595
1596NETaa13352: OP_SCOPE allocated as UNOP rather than LISTOP.
1597From: Andy Dougherty
1598Files patched: op.c
1599
1600NETaa13353: scope() didn't release filegv on OP_SCOPE optimization.
1601From: Larry Wall
1602Files patched: op.c
1603 When scope() nulled out a NEXTSTATE, it didn't release its filegv reference.
1604
1605NETaa13355: hv_delete now avoids useless mortalcopy
1606From: Larry Wall
1607Files patched: hv.c op.c pp.c pp_ctl.c proto.h scope.c util.c
1608 hv_delete now avoids useless mortalcopy.
1609
1610
1611NETaa13359: comma operator section missing its heading
1612From: Larry Wall
1613Files patched: pod/perlop.pod
1614
1615NETaa13359: random typo
1616Files patched: pod/perldiag.pod
1617
1618NETaa13360: code to handle partial vec values was bogus.
1619From: Conrad Augustin
1620Files patched: pp.c
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.
1623
1624NETaa13361: made it not interpolate inside regexp comments
1625From: Martin Jost
1626Files patched: toke.c
1627 To avoid surprising people, it no longer interpolates inside regexp
1628 comments.
1629
1630NETaa13362: ${q[1]} should be interpreted like it used to
1631From: Hans Mulder
1632Files patched: toke.c
1633 Now resolves ${keyword[1]} to $keyword[1] and warns if -w. Likewise for {}.
1634
1635NETaa13363: meaning of repeated search chars undocumented in tr///
1636From: Stephen P. Potter
1637Files patched: pod/perlop.pod
1638 Documented that repeated characters use the first translation given.
1639
1640NETaa13365: if closedir fails, don't try it again.
1641From: Frank Crawford
1642Files patched: pp_sys.c
1643 Now does not attempt to closedir a second time.
1644
1645NETaa13366: can't do block scope optimization on $1 et al when tainting.
1646From: Andrew Vignaux
1647Files 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).
1654
1655NETaa13366: fixed this a better way in toke.c.
1656Files patched: op.c
1657 (same)
1658
1659NETaa13366: need to disable scope optimization when tainting.
1660Files patched: op.c
1661 (same)
1662
1663NETaa13367: Did a SvCUR_set without nulling out final char.
1664From: "Rob Henderson" <robh@cs.indiana.edu>
1665Files patched: doop.c pp.c pp_sys.c
1666 When do_vop set the length on its result string it neglected to null-terminate
1667 it.
1668
1669NETaa13368: bigrat::norm sometimes chucked sign
1670From: Greg Kuperberg
1671Files 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.
1676
1677NETaa13368: botched previous patch
1678Files patched: lib/bigrat.pl
1679 (same)
1680
1681NETaa13369: # is now a comment character, and \# should be left for regcomp.
1682From: Simon Parsons
1683Files 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.
1688
1689NETaa13369: comment after regexp quantifier induced non-match.
1690Files patched: regcomp.c
1691 (same)
1692
1693NETaa13370: some code assumed SvCUR was of type int.
1694From: Spider Boardman
1695Files 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
1698 same way.
1699
1700NETaa13375: sometimes dontbother wasn't added back into strend.
1701From: Jamshid Afshar
1702Files 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
1705 match.
1706
1707NETaa13375: sv_setpvn now disallows negative length.
1708Files patched: sv.c
1709 (same)
1710
1711NETaa13376: suspected indirect objecthood prevented recognition of lexical.
1712From: Gisle.Aas@nr.no
1713Files 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.)
1718
1719NETaa13377: -I processesing ate remainder of #! line.
1720From: Darrell Schiebel
1721Files patched: perl.c
1722 I made the -I processing in moreswitches look for the end of the string,
1723 delimited by whitespace.
1724
1725NETaa13379: ${foo} now treated the same outside quotes as inside
1726From: Hans Mulder
1727Files patched: toke.c
1728 ${bareword} is now treated the same outside quotes as inside.
1729
1730NETaa13379: previous fix for this bug was botched
1731Files patched: toke.c
1732 (same)
1733
1734NETaa13381: TEST should check for perl link
1735From: Andy Dougherty
1736Files patched: t/TEST
1737 die "You need to run \"make test\" first to set things up.\n" unless -e 'perl';
1738
1739
1740NETaa13384: fixed version 0.000 botch.
1741From: Larry Wall
1742Files patched: installperl
1743
1744NETaa13385: return 0 from required file loses message
1745From: Malcolm Beattie
1746Files patched: pp_ctl.c
1747 Works right now.
1748
1749NETaa13387: added pod2latex
1750From: Taro KAWAGISHI
1751Files patched: MANIFEST pod/pod2latex
1752 Added most recent copy to pod directory.
1753
1754NETaa13388: constant folding now prefers integer results over double
1755From: Ilya Zakharevich
1756Files patched: op.c
1757 Constant folding now prefers integer results over double.
1758
1759NETaa13389: now treats . and exec as shell metathingies
1760From: Hans Mulder
1761Files patched: doio.c
1762 Now treats . and exec as shell metathingies.
1763
1764NETaa13395: eval didn't check taintedness.
1765From: Larry Wall
1766Files patched: pp_ctl.c
1767
1768NETaa13396: $^ coredumps at end of string
1769From: Paul Rogers
1770Files patched: toke.c
1771 The scan_ident() didn't check for a null following $^.
1772
1773NETaa13397: improved error messages when operator expected
1774From: Larry Wall
1775Files patched: toke.c
1776 Added message (Do you need to predeclare BAR?). Also fixed the missing
1777 semicolon message.
1778
1779NETaa13399: cleanup by Andy
1780From: Larry Wall
1781Files 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
1782
1783NETaa13399: cleanup from Andy
1784Files patched: MANIFEST
1785
1786NETaa13399: configuration cleanup
1787Files 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
1788
1789NETaa13399: new files from Andy
1790Files 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
1791
1792NETaa13399: patch0l from Andy
1793Files 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
1794
1795NETaa13399: stuff from Andy
1796Files patched: Configure MANIFEST Makefile.SH configpm hints/dec_osf.sh hints/linux.sh hints/machten.sh lib/ExtUtils/MakeMaker.pm util.c
1797
1798NETaa13399: Patch 0k from Andy
1799Files 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
1800
1801NETaa13399: Patch 0m from Andy
1802Files 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
1803
1804NETaa13400: pod2html update from Bill Middleton
1805From: Larry Wall
1806Files patched: pod/pod2html
1807
1808NETaa13401: Boyer-Moore code attempts to compile string longer than 255.
1809From: Kyriakos Georgiou
1810Files 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.
1813
1814NETaa13403: missing a $ on variable name
1815From: Wayne Scott
1816Files patched: installperl
1817 Yup, it was missing.
1818
1819NETaa13406: didn't wipe out dead match when proceeding to next BRANCH
1820From: Michael P. Clemens
1821Files patched: regexec.c
1822 The code to check alternatives didn't invalidate backreferences matched by the
1823 failed branch.
1824
1825NETaa13407: overload upgrade
1826From: owner-perl5-porters@nicoh.com
1827Also: Ilya Zakharevich
1828Files 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.
1831
1832NETaa13409: sv_gets tries to grow string at EOF
1833From: Harold O Morris
1834Files patched: sv.c
1835 Applied suggested patch, only two statements earlier, since the end code
1836 also does SvCUR_set.
1837
1838NETaa13410: delaymagic did =~ instead of &= ~
1839From: Andreas Schwab
1840Files patched: pp_hot.c
1841 Applied supplied patch.
1842
1843NETaa13411: POSIX didn't compile under -DLEAKTEST
1844From: Frederic Chauveau
1845Files patched: ext/POSIX/POSIX.xs
1846 Used NEWSV instead of newSV.
1847
1848NETaa13412: new version from Tony Sanders
1849From: Tony Sanders
1850Files patched: lib/Term/Cap.pm
1851 Installed as Term::Cap.pm
1852
1853NETaa13413: regmust extractor needed to restart loop on BRANCH for (?:) to work
1854From: DESARMENIEN
1855Files patched: regcomp.c
1856 The BRANCH skipper should have restarted the loop from the top.
1857
1858NETaa13414: the check for accidental list context was done after pm_short check
1859From: Michael H. Coen
1860Files patched: pp_hot.c
1861 Moved check for accidental list context to before the pm_short optimization.
1862
1863NETaa13418: perlre.pod babbled nonsense about | in character classes
1864From: Philip Hazel
1865Files 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|]>.
1869
1870NETaa13419: need to document introduction of lexical variables
1871From: "Heading, Anthony"
1872Files patched: pod/perlfunc.pod
1873 Now mentions that lexicals aren't introduced till after the current statement.
1874
1875NETaa13420: formats that overflowed a page caused endless top of forms
1876From: Hildo@CONSUL.NL
1877Files 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.
1880
1881NETaa13423: the code to do negative list subscript in scalar context was missing
1882From: Steve McDougall
1883Files patched: pp.c
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.
1886
1887NETaa13424: existing but undefined CV blocked inheritance
1888From: Spider Boardman
1889Files patched: gv.c
1890 Applied supplied patch.
1891
1892NETaa13425: removed extra argument to croak
1893From: "R. Bernstein"
1894Files patched: regcomp.c
1895 Removed extra argument.
1896
1897NETaa13427: added return types
1898From: "R. Bernstein"
1899Files patched: x2p/a2py.c
1900 Applied suggested patch.
1901
1902NETaa13427: added static declarations
1903Files patched: x2p/walk.c
1904 (same)
1905
1906NETaa13428: split was assuming that all backreferences were defined
1907From: Dave Schweisguth
1908Files patched: pp.c
1909 split was assuming that all backreferences were defined.
1910
1911NETaa13430: hoistmust wasn't hoisting anchored shortcircuit's length
1912From: Tom Christiansen
1913Also: Rob Hooft
1914Files patched: toke.c
1915
1916NETaa13432: couldn't call code ref under debugger
1917From: Mike Fletcher
1918Files 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
1921 in that case.
1922
1923NETaa13435: 1' dumped core
1924From: Larry Wall
1925Files patched: toke.c
1926 Didn't check a pointer for nullness.
1927
1928NETaa13436: print foo(123) didn't treat foo as subroutine
1929From: mcook@cognex.com
1930Files patched: toke.c
1931 Now treats it as a subroutine rather than a filehandle.
1932
1933NETaa13437: &$::foo didn't think $::foo was a variable name
1934From: mcook@cognex.com
1935Files patched: toke.c
1936 Now treats $::foo as a global variable.
1937
1938NETaa13439: referred to old package name
1939From: Tom Christiansen
1940Files 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.
1943
1944NETaa13440: stat operations didn't know what to do with glob or ref to glob
1945From: mcook@cognex.com
1946Files patched: doio.c pp_sys.c
1947 Now knows about the kinds of filehandles returned by FileHandle constructors
1948 and such.
1949
1950NETaa13442: couldn't find name of copy of deleted symbol table entry
1951From: Spider Boardman
1952Files 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.
1956
1957 This has the advantage of not creating a reference loop.
1958
1959NETaa13443: couldn't override an XSUB
1960From: William Setzer
1961Files patched: op.c
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).
1964
1965NETaa13443: needed to do same thing in newXS
1966Files patched: op.c
1967 (same)
1968
1969NETaa13444: -foo now doesn't warn unless sub foo is defined
1970From: Larry Wall
1971Files patched: toke.c
1972 Made it not warn on -foo, unless there is a sub foo defined.
1973
1974NETaa13451: in scalar context, pp_entersub now guarantees one item from XSUB
1975From: Nick Gianniotis
1976Files 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.
1980
1981NETaa13457: now explicitly disallows printf format with 'n' or '*'.
1982From: lees@cps.msu.edu
1983Files patched: doop.c
1984 Now says
1985
1986 Use of n in printf format not supported at ./foo line 3.
1987
1988
1989NETaa13458: needed to call SvPOK_only() in pp_substr
1990From: Wayne Scott
1991Files patched: pp.c
1992 Needed to call SvPOK_only() in pp_substr.
1993
1994NETaa13459: umask and chmod now warn about missing initial 0 even with paren
1995From: Andreas Koenig
1996Files patched: toke.c
1997 Now skips parens as well as whitespace looking for argument.
1998
1999NETaa13460: backtracking didn't work on .*? because reginput got clobbered
2000From: Andreas Koenig
2001Files 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.
2004
2005NETaa13475: \(@ary) now treats array as list of scalars
2006From: Tim Bunce
2007Files patched: op.c
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.
2010
2011NETaa13481: accept buffer wasn't aligned good enough
2012From: Holger Bechtold
2013Also: Christian Murphy
2014Files patched: pp_sys.c
2015 Applied suggested patch.
2016
2017NETaa13486: while (<>) now means while (defined($_ = <>))
2018From: Jim Balter
2019Files patched: op.c pod/perlop.pod
2020 while (<HANDLE>) now means while (defined($_ = <HANDLE>)).
2021
2022NETaa13500: needed DESTROY in FileHandle
2023From: Tim Bunce
2024Files 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.
2027
2028NETaa13502: now complains if you use local on a lexical variable
2029From: Larry Wall
2030Files patched: op.c
2031 Now says something like
2032
2033 Can't localize lexical variable $var at ./try line 6.
2034
2035NETaa13512: added $SIG{__WARN__} and $SIG{__DIE__} hooks
2036From: Larry Wall
2037Files patched: embed.h gv.c interp.sym mg.c perl.h pod/perlvar.pod pp_ctl.c util.c Todo pod/perldiag.pod
2038
2039NETaa13514: statements before intro of lex var could see lex var
2040From: William Setzer
2041Files patched: op.c
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,
2045
2046 my $y = 3;
2047 my $y = $y;
2048 print $y;
2049
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.
2055
2056NETaa13520: added closures
2057From: Larry Wall
2058Files 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
2059
2060NETaa13520: test to see if lexical works in a format now
2061Files patched: t/op/write.t
2062
2063NETaa13522: substitution couldn't be used on a substr()
2064From: Hans Mulder
2065Files 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.
2068
2069NETaa13525: G_EVAL mode in perl_call_sv didn't return values right.
2070Files patched: perl.c
2071
2072NETaa13525: consolidated error message
2073From: Larry Wall
2074Files patched: perl.h toke.c
2075
2076NETaa13525: derived it
2077Files patched: perly.h
2078
2079NETaa13525: missing some values from embed.h
2080Files patched: embed.h
2081
2082NETaa13525: random cleanup
2083Files 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
2084
2085NETaa13525: random cleanup
2086Files patched: pp_ctl.c util.c
2087
2088NETaa13527: File::Find needed to export $name and $dir
2089From: Chaim Frenkel
2090Files patched: lib/File/Find.pm
2091 They are now exported.
2092
2093NETaa13528: cv_undef left unaccounted-for GV pointer in CV
2094From: Tye McQueen
2095Also: Spider Boardman
2096Files patched: op.c
2097
2098NETaa13530: scalar keys now resets hash iterator
2099From: Tim Bunce
2100Files patched: doop.c
2101 scalar keys() now resets the hash iterator.
2102
2103NETaa13531: h2ph doesn't check defined right
2104From: Casper H.S. Dik
2105Files patched: h2ph.SH
2106
2107NETaa13540: VMS update
2108From: Larry Wall
2109Files 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
2110
2111NETaa13540: got some duplicate code
2112Files patched: lib/File/Path.pm
2113
2114NETaa13540: stuff from Charles
2115Files 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
2116
2117NETaa13540: tweak from Charles
2118Files patched: lib/File/Path.pm
2119
2120NETaa13552: scalar unpack("P4",...) ignored the 4
2121From: Eric Arnold
2122Files patched: pp.c
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.
2125
2126NETaa13553: now warns about 8 or 9 in octal escapes
2127From: Mike Rogers
2128Files 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.
2131
2132NETaa13554: now allows foreach ${"name"}
2133From: Johan Holtman
2134Files patched: op.c
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"}.
2138
2139NETaa13559: substitution now always checks for readonly
2140From: Rodger Anderson
2141Files patched: pp_hot.c
2142 Substitution now always checks for readonly.
2143
2144NETaa13561: added explanations of closures and curly-quotes
2145From: Larry Wall
2146Files patched: pod/perlref.pod
2147
2148NETaa13562: null components in path cause indigestion
2149From: Ambrose Kofi Laing
2150Files patched: lib/Cwd.pm lib/pwd.pl
2151
2152NETaa13575: documented semantics of negative substr length
2153From: Jeff Bouis
2154Files 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.
2157
2158NETaa13575: negative length to substr didn't work when offset non-zero
2159Files patched: pp.c
2160 (same)
2161
2162NETaa13575: random cleanup
2163Files patched: pod/perlfunc.pod
2164 (same)
2165
2166NETaa13580: couldn't localize $ACCUMULATOR
2167From: Larry Wall
2168Files 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
2170 exporting good.
2171
2172NETaa13583: doc mods from Tom
2173From: Larry Wall
2174Files 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
2175
2176NETaa13589: return was enforcing list context on its arguments
2177From: Tim Freeman
2178Files 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.
2181
2182NETaa13591: POSIX::creat used wrong argument
2183From: Paul Marquess
2184Files patched: ext/POSIX/POSIX.pm
2185 Applied suggested patch.
2186
2187NETaa13605: use strict refs error message now displays bad ref
2188From: Peter Gordon
2189Files patched: perl.h pod/perldiag.pod pp.c pp_hot.c
2190 Now says
2191
2192 Can't use string ("2") as a HASH ref while "strict refs" in use at ./foo line 12.
2193
2194NETaa13630: eof docs were unclear
2195From: Hallvard B Furuseth
2196Files patched: pod/perlfunc.pod
2197 Applied suggested patch.
2198
2199NETaa13636: $< and $> weren't refetched on undump restart
2200From: Steve Pearlmutter
2201Files patched: perl.c
2202 The code in main() bypassed perl_construct on an undump restart, which bypassed
2203 the code that set $< and $>.
2204
2205NETaa13641: added Tim's fancy new import whizbangers
2206From: Tim Bunce
2207Files patched: lib/Exporter.pm
2208 Applied suggested patch.
2209
2210NETaa13649: couldn't AUTOLOAD a symbol reference
2211From: Larry Wall
2212Files patched: pp_hot.c
2213 pp_entersub needed to guarantee a CV so it would get to the AUTOLOAD code.
2214
2215NETaa13651: renamed file had wrong package name
2216From: Andreas Koenig
2217Files patched: lib/File/Path.pm
2218 Applied suggested patch.
2219
2220NETaa13660: now that we're testing distribution we can diagnose RANDBITS errors
2221From: Karl Glazebrook
2222Files patched: t/op/rand.t
2223 Changed to suggested algorithm. Also duplicated it to test rand(100) too.
2224
2225NETaa13660: rand.t didn't test for proper distribution within range
2226Files patched: t/op/rand.t
2227 (same)
2228
2229NETaa13671: array slice misbehaved in a scalar context
2230From: Tye McQueen
2231Files patched: pp.c
2232 A spurious else prevented the scalar-context-handling code from running.
2233
2234NETaa13672: filehandle constructors in POSIX don't return failure successfully
2235From: Ian Phillipps
2236Files patched: ext/POSIX/POSIX.pm
2237 Applied suggested patch.
2238
2239
2240NETaa13678: forced $1 to always be untainted
2241From: Ka-Ping Yee
2242Files patched: mg.c
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.
2245
2246NETaa13682: formline doc need to discuss ~ and ~~ policy
2247From: Peter Gordon
2248Files patched: pod/perlfunc.pod
2249
2250NETaa13686: POSIX::open and POSIX::mkfifo didn't check tainting
2251From: Larry Wall
2252Files patched: ext/POSIX/POSIX.xs
2253 open() and mkfifo() now check tainting.
2254
2255NETaa13687: new Exporter.pm
2256From: Tim Bunce
2257Files 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.
2262
2263NETaa13687: new Exporter.pm
2264Files patched: ext/POSIX/POSIX.pm
2265 (same)
2266
2267NETaa13694: add sockaddr_in to Socket.pm
2268From: Tim Bunce
2269Files patched: ext/Socket/Socket.pm
2270 Applied suggested patch.
2271
2272NETaa13695: library routines should use qw() as good example
2273From: Dean Roehrich
2274Files 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.
2276
2277NETaa13696: myconfig should be a routine in Config.pm
2278From: Kenneth Albanowski
2279Files patched: configpm
2280 Applied suggested patch.
2281
2282NETaa13704: fdopen closed fd on failure
2283From: Hallvard B Furuseth
2284Files patched: doio.c
2285 Applied suggested patch.
2286
2287NETaa13706: Term::Cap doesn't work
2288From: Dean Roehrich
2289Files patched: lib/Term/Cap.pm
2290 Applied suggested patch.
2291
2292NETaa13710: cryptswitch needed to be more "useable"
2293From: Tim Bunce
2294Files 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.
2299
2300NETaa13712: new_tmpfile() can't be called as constructor
2301From: Hans Mulder
2302Files patched: ext/POSIX/POSIX.xs
2303 Now allows new_tmpfile() to be called as a constructor.
2304
2305NETaa13714: variable method call not documented
2306From: "Randal L. Schwartz"
2307Files patched: pod/perlobj.pod
2308 Now indicates that OBJECT->$method() works.
2309
2310NETaa13715: PACK->$method produces spurious warning
2311From: Larry Wall
2312Files patched: toke.c
2313 The -> operator was telling the lexer to expect an operator when the
2314 next thing was a variable.
2315
2316NETaa13716: Carp now allows multiple packages to be skipped out of
2317From: Larry Wall
2318Files patched: lib/Carp.pm
2319 The subroutine redefinition warnings now warn on import collisions.
2320
2321NETaa13716: Exporter catches warnings and gives a better line number
2322Files patched: lib/Exporter.pm
2323 (same)
2324
2325NETaa13716: now counts imported routines as "defined" for redef warnings
2326Files patched: op.c sv.c
2327 (same)
2328
2329-------------
2330Version 5.000
2331-------------
2332
93a17b20 2333New things
2334----------
2335 The -w switch is much more informative.
2336
463ee0b2 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.
93a17b20 2339
2340 Objects. See t/op/ref.t for examples.
2341
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.
2345
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.
2349
3edbfbe5 2350 More embeddible. See main.c and embed_h.sh. Multiple interpreters
463ee0b2 2351 in the same process are supported (though not with interleaved
2352 execution yet).
93a17b20 2353
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.
2358
2359 eval is now treated more like a subroutine call. Among other things,
2360 this means you can return from it.
2361
2362 Format value lists may be spread over multiple lines by enclosing in
85e6fe83 2363 a do {} block.
93a17b20 2364
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.
2368
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"!)
2371
2372 The ?: operator is now legal as an lvalue.
2373
2374 List context now propagates to the right side of && and ||, as well
2375 as the 2nd and 3rd arguments to ?:.
2376
2377 The "defined" function can now take a general expression.
2378
2379 Lexical scoping available via "my". eval can see the current lexical
2380 variables.
2381
463ee0b2 2382 The preferred package delimiter is now :: rather than '.
2383
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.
2387
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.
2390
a0d0e21e 2391 New functions include: abs(), chr(), uc(), ucfirst(), lc(), lcfirst(),
2392 chomp(), glob()
8990e307 2393
2394 require with a number checks to see that the version of Perl that is
2395 currently running is at least that number.
2396
2397 Dynamic loading of external modules is now supported.
2398
2399 There is a new quote form qw//, which is equivalent to split(' ', q//).
2400
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;
2404
2405 Filehandle methods are now supported:
2406 output_autoflush STDOUT 1;
2407
2408 There is now an "English" module that provides human readable translations
2409 for cryptic variable names.
2410
2411 Autoload stubs can now call the replacement subroutine with goto &realsub.
2412
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
2415 that package.
2416
a0d0e21e 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".
2424
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.
2428
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.
2431
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
2434 newline.
2435
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.
2440
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".
2450
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.
85e6fe83 2455
463ee0b2 2456Incompatibilities
2457-----------------
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.
2460
a0d0e21e 2461 Ordinary variables starting with underscore are no longer forced into
2462 package main.
2463
463ee0b2 2464 s'$lhs'$rhs' now does no interpolation on either side. It used to
2465 interplolate $lhs but not $rhs.
2466
2467 The second and third arguments of splice are now evaluated in scalar
2468 context (like the book says) rather than list context.
2469
2470 Saying "shift @foo + 20" is now a semantic error because of precedence.
2471
2472 "open FOO || die" is now incorrect. You need parens around the filehandle.
2473
2474 The elements of argument lists for formats are now evaluated in list
2475 context. This means you can interpolate list values now.
2476
2477 You can't do a goto into a block that is optimized away. Darn.
2478
2479 It is no longer syntactically legal to use whitespace as the name
a0d0e21e 2480 of a variable, or as a delimiter for any kind of quote construct.
463ee0b2 2481
2482 Some error messages will be different.
2483
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.
2486
2487 m//g now attaches its state to the searched string rather than the
2488 regular expression.
2489
2490 "reverse" is no longer allowed as the name of a sort subroutine.
2491
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.
2494
ed6116ce 2495 Symbols starting with _ are no longer forced into package main, except
2496 for $_ itself (and @_, etc.).
2497
8990e307 2498 Double-quoted strings may no longer end with an unescaped $ or @.
2499
2500 Negative array subscripts now count from the end of the array.
2501
2502 The comma operator in a scalar context is now guaranteed to give a
2503 scalar context to its arguments.
a0d0e21e 2504
2505 The ** operator now binds more tightly than unary minus.
2506
2507 Setting $#array lower now discards array elements so that destructors
2508 work reasonably.
2509
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.
2512
2513 Attempts to set $1 through $9 now result in a run-time error.