File: perl591delta.html

package info (click to toggle)
perl-doc-html 5.10.1-1
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 33,152 kB
  • ctags: 24,035
  • sloc: makefile: 10
file content (728 lines) | stat: -rw-r--r-- 34,144 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <title>perl591delta - perldoc.perl.org</title>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  <meta http-equiv="Content-Language" content="en-gb">
  <link href="static/css-20090810.css" rel="stylesheet" rev="stylesheet" type="text/css" media="screen">
</head>

<body onLoad="perldoc.startup();" onPageShow="if (event.persisted) perldoc.startup();">
    <div id="page">
      
      <div id="header">
	<div id="homepage_link">
	  <a href="index.html"></a>
	</div>
        <div id="search_form">
          <form action="search.html" method="GET" id="search">
            <input type="text" name="q" id="search_box" alt="Search">
          </form>
        </div>
      </div>
      
      <div id="body">
        <div id="left_column">
          <div class="side_group">
            <div class="side_panel doc_panel">
              <p>Manual</p>
              <ul>
                <li><a href="index-overview.html">Overview</a>
                <li><a href="index-tutorials.html">Tutorials</a>
                <li><a href="index-faq.html">FAQs</a>
                <li><a href="index-history.html">History / Changes</a>
                <li><a href="index-licence.html">License</a>
              </ul>
            </div>
            <div class="side_panel doc_panel">
              <p>Reference</p>
              <ul>
                <li><a href="index-language.html">Language</a>
                <li><a href="index-functions.html">Functions</a>
                <li><a href="perlop.html">Operators</a>
                <li><a href="perlvar.html">Special Variables</a>
                <li><a href="index-pragmas.html">Pragmas</a>
                <li><a href="index-utilities.html">Utilities</a>
                <li><a href="index-internals.html">Internals</a></li>
                <li><a href="index-platforms.html">Platform Specific</a>
              </ul>
            </div>
            <div class="side_panel doc_panel">
              <p>Modules</p>
              <ul>
		<li>
		
                
                  
		    
		  
		
                  
		    
		  
		
                  
		    
		  
		
                  
		    
		  
		
                  
		    
		  
		
                  
		    
		  
		
                  
		    
		  
		
                  
		    
		  
		
                  
		    
		  
		
                  
		
                  
		
                  
		    
		  
		
                  
		    
		  
		
                  
		    
		  
		
                  
		    
		  
		
                  
		    
		  
		
                  
		
                  
		
                  
		    
		  
		
                  
		    
		  
		
                  
		    
		  
		
                  
		
                  
		
                  
		    
		  
		
                  
		
                  
		
		
                    <a href="index-modules-A.html">A</a>
                    
                      
                        &bull;
                      
                    
                
                    <a href="index-modules-B.html">B</a>
                    
                      
                        &bull;
                      
                    
                
                    <a href="index-modules-C.html">C</a>
                    
                      
                        &bull;
                      
                    
                
                    <a href="index-modules-D.html">D</a>
                    
                      
                        &bull;
                      
                    
                
                    <a href="index-modules-E.html">E</a>
                    
                      
                        <li>
                      
                    
                
                    <a href="index-modules-F.html">F</a>
                    
                      
                        &bull;
                      
                    
                
                    <a href="index-modules-G.html">G</a>
                    
                      
                        &bull;
                      
                    
                
                    <a href="index-modules-H.html">H</a>
                    
                      
                        &bull;
                      
                    
                
                    <a href="index-modules-I.html">I</a>
                    
                      
                        &bull;
                      
                    
                
                    <a href="index-modules-L.html">L</a>
                    
                      
                        <li>
                      
                    
                
                    <a href="index-modules-M.html">M</a>
                    
                      
                        &bull;
                      
                    
                
                    <a href="index-modules-N.html">N</a>
                    
                      
                        &bull;
                      
                    
                
                    <a href="index-modules-O.html">O</a>
                    
                      
                        &bull;
                      
                    
                
                    <a href="index-modules-P.html">P</a>
                    
                      
                        &bull;
                      
                    
                
                    <a href="index-modules-S.html">S</a>
                    
                      
                        <li>
                      
                    
                
                    <a href="index-modules-T.html">T</a>
                    
                      
                        &bull;
                      
                    
                
                    <a href="index-modules-U.html">U</a>
                    
                      
                        &bull;
                      
                    
                
                    <a href="index-modules-X.html">X</a>
                    
                
              </ul>
            </div>
          </div>
          <div class="side_group">
            <div class="side_panel links_panel">
              <p>News / Blogs</p>
              <ul>
        <li><a href="http://perlbuzz.com">Perl Buzz</a></li>
        <li><a href="http://ironman.enlightenedperl.org">Perl Iron Man</a></li>
        <li><a href="http://perlsphere.net">Perlsphere</a></li>
        <li><a href="http://planet.perl.org">Planet Perl</a></li>
	<li><a href="http://news.perlfoundation.org/">TPF news</a></li>
        <li><a href="http://use.perl.org">Use Perl</a></li>
              </ul>
            </div>            
            <div class="side_panel links_panel">
              <p>See also</p>
              <ul>
        <li><a href="http://search.cpan.org">CPAN</a></li>
        <li><a href="http://www.perl.org">Perl.org</a></li>
        <li><a href="http://www.perl.com">Perl.com</a></li>
        <li><a href="http://www.perlfoundation.org/perl5/index.cgi">Perl 5 Wiki</a></li>
        <li><a href="http://jobs.perl.org">Perl Jobs</a></li>
        <li><a href="http://www.pm.org">Perl Mongers</a></li>
        <li><a href="http://www.perlmonks.org">Perl Monks</a></li>
              </ul>
            </div>
            <div class="side_panel links_panel">
              <p>Contact</p>
              <ul>
                <li><a href="http://perl.jonallen.info">Site designed and maintained by Jon&nbsp;Allen&nbsp;(JJ)</a>
                <li><a href="http://perl.jonallen.info">http://perl.jonallen.info</a>
              </ul>
              <ul>
                <li><a href="http://perl.jonallen.info/projects/perldoc">View the project page and FAQs</a>
              </ul>
            </div>
          </div>
        </div>
        <div id="centre_column">
          <div id="content_header">
            <div id="title_bar">
              <div id="page_name">
                <h1>perl591delta</h1>
              </div>
              <div id="perl_version">
                Perl 5 version 10.1 documentation
              </div>
              <div id="page_links">
                <a href="#" onClick="toolbar.goToTop();return false;">Go to top</a>
		
                  &bull; <a href="#" id="page_index_toggle">Show page index</a>
		
		
              </div>
            </div>
            <div id="breadcrumbs">
                
    <a href="index.html">Home</a> &gt;
    
      
        <a href="index-history.html">History / Changes</a> &gt;
      
    
    perl591delta
  

            </div>
          </div>
          <div id="content_body">
	    <!--[if lt IE 7]>
 <div class="noscript">
   <p>
     <strong>It looks like you're using Internet Explorer 6. This is a very old
     browser which does not offer full support for modern websites.</strong>
   </p>
   <p>
     Unfortunately this means that this website will not work on
     your computer.
   </p>
   <p>
     Don't miss out though! To view the site (and get a better experience from
     many other websites), simply upgrade to
     <a href="http://www.microsoft.com/windows/Internet-explorer/default.aspx">Internet
Explorer 8</a>
     or download an alternative browser such as
     <a href="http://www.mozilla.com/en-US/firefox/firefox.html">Firefox</a>,
     <a href="http://www.apple.com/safari/download/">Safari</a>, or
     <a href="http://www.google.co.uk/chrome">Google Chrome</a>.
   </p>
   <p>
     All of these browsers are free. If you're using a PC at work, you may
     need to contact your IT administrator.
   </p>
 </div>
<![endif]-->
	    <noscript>
	      <div class="noscript">
	      <p>
                <strong>Please note: Many features of this site require JavaScript. You appear to have JavaScript disabled,
	        or are running a non-JavaScript capable web browser.</strong>
	      </p>
	      <p>
		To get the best experience, please enable JavaScript or download a modern web browser such as <a href="http://www.microsoft.com/windows/Internet-explorer/default.aspx">Internet Explorer 8</a>, <a href="http://www.mozilla.com/en-US/firefox/firefox.html">Firefox</a>, <a href="http://www.apple.com/safari/download/">Safari</a>, or <a href="http://www.google.co.uk/chrome">Google Chrome</a>.
              </p>
	      </div>
	    </noscript>
	    <div id="from_search"></div>
            <h1>perl591delta</h1>


  <!--    -->
<ul><li><a href="#NAME">NAME</a><li><a href="#DESCRIPTION">DESCRIPTION</a><li><a href="#Incompatible-Changes">Incompatible Changes</a><ul><li><a href="#substr()-lvalues-are-no-longer-fixed-length">substr() lvalues are no longer fixed-length</a><li><a href="#The-%3aunique-attribute-is-only-meaningful-for-globals">The :unique attribute is only meaningful for globals</a></ul><li><a href="#Core-Enhancements">Core Enhancements</a><ul><li><a href="#Lexical-%24_">Lexical $_</a><li><a href="#Tied-hashes-in-scalar-context">Tied hashes in scalar context</a><li><a href="#Formats">Formats</a><li><a href="#Stacked-filetest-operators">Stacked filetest operators</a></ul><li><a href="#Modules-and-Pragmata">Modules and Pragmata</a><li><a href="#Utility-Changes">Utility Changes</a><li><a href="#Documentation">Documentation</a><li><a href="#Performance-Enhancements">Performance Enhancements</a><li><a href="#Selected-Bug-Fixes">Selected Bug Fixes</a><ul><li><a href="#UTF-8-bugs">UTF-8 bugs</a><li><a href="#Threading-bugs">Threading bugs</a><li><a href="#More-bugs">More bugs</a></ul><li><a href="#New-or-Changed-Diagnostics">New or Changed Diagnostics</a><li><a href="#Changed-Internals">Changed Internals</a><ul><li><a href="#Reordering-of-SVt_*-constants">Reordering of SVt_* constants</a><li><a href="#Removal-of-CPP-symbols">Removal of CPP symbols</a><li><a href="#Less-space-is-used-by-ops">Less space is used by ops</a><li><a href="#New-parser">New parser</a></ul><li><a href="#Configuration-and-Building">Configuration and Building</a><li><a href="#Known-Problems">Known Problems</a><ul><li><a href="#Platform-Specific-Problems">Platform Specific Problems</a></ul><li><a href="#To-do-for-perl-5.10.0">To-do for perl 5.10.0</a><li><a href="#Reporting-Bugs">Reporting Bugs</a><li><a href="#SEE-ALSO">SEE ALSO</a></ul><a name="NAME"></a><h1>NAME</h1>
<p>perl591delta - what is new for perl v5.9.1</p>
<a name="DESCRIPTION"></a><h1>DESCRIPTION</h1>
<p>This document describes differences between the 5.9.0 and the 5.9.1
development releases. See <a href="perl590delta.html">perl590delta</a> for the differences between
5.8.0 and 5.9.0.</p>
<a name="Incompatible-Changes"></a><h1>Incompatible Changes</h1>
<a name="substr()-lvalues-are-no-longer-fixed-length"></a><h2>substr() lvalues are no longer fixed-length</h2>
<p>The lvalues returned by the three argument form of substr() used to be a
&quot;fixed length window&quot; on the original string. In some cases this could
cause surprising action at distance or other undefined behaviour. Now the
length of the window adjusts itself to the length of the string assigned to
it.</p>
<a name="The-%3aunique-attribute-is-only-meaningful-for-globals"></a><h2>The <code class="inline"><span class="j">:</span><span class="w">unique</span></code>
 attribute is only meaningful for globals</h2>
<p>Now applying <code class="inline"><span class="j">:</span><span class="w">unique</span></code>
 to lexical variables and to subroutines will
result in a compilation error.</p>
<a name="Core-Enhancements"></a><h1>Core Enhancements</h1>
<a name="Lexical-%24_"></a><h2>Lexical <code class="inline"><span class="i">$_</span></code>
</h2>
<p>The default variable <code class="inline"><span class="i">$_</span></code>
 can now be lexicalized, by declaring it like
any other lexical variable, with a simple</p>
<pre class="verbatim"><ol><li>    <a class="l_k" href="functions/my.html">my</a> <span class="i">$_</span><span class="sc">;</span></li></ol></pre><p>The operations that default on <code class="inline"><span class="i">$_</span></code>
 will use the lexically-scoped
version of <code class="inline"><span class="i">$_</span></code>
 when it exists, instead of the global <code class="inline"><span class="i">$_</span></code>
.</p>
<p>In a <code class="inline"><a class="l_k" href="functions/map.html">map</a></code> or a <code class="inline"><a class="l_k" href="functions/grep.html">grep</a></code> block, if <code class="inline"><span class="i">$_</span></code>
 was previously my&#39;ed, then the
<code class="inline"><span class="i">$_</span></code>
 inside the block is lexical as well (and scoped to the block).</p>
<p>In a scope where <code class="inline"><span class="i">$_</span></code>
 has been lexicalized, you can still have access to
the global version of <code class="inline"><span class="i">$_</span></code>
 by using <code class="inline"><span class="i">$::_</span></code>
, or, more simply, by
overriding the lexical declaration with <code class="inline"><a class="l_k" href="functions/our.html">our</a> <span class="i">$_</span></code>
.</p>
<a name="Tied-hashes-in-scalar-context"></a><h2>Tied hashes in scalar context</h2>
<p>As of perl 5.8.2/5.9.0, tied hashes did not return anything useful in
scalar context, for example when used as boolean tests:</p>
<pre class="verbatim"><ol><li>	if <span class="s">(</span><span class="i">%tied_hash</span><span class="s">)</span> <span class="s">{</span> ... <span class="s">}</span></li></ol></pre><p>The old nonsensical behaviour was always to return false,
regardless of whether the hash is empty or has elements.</p>
<p>There is now an interface for the implementors of tied hashes to implement
the behaviour of a hash in scalar context, via the SCALAR method (see
<a href="perltie.html">perltie</a>).  Without a SCALAR method, perl will try to guess whether
the hash is empty, by testing if it&#39;s inside an iteration (in this case
it can&#39;t be empty) or by calling FIRSTKEY.</p>
<a name="Formats"></a><h2>Formats</h2>
<p>Formats were improved in several ways. A new field, <code class="inline">^*</code>, can be used for
variable-width, one-line-at-a-time text. Null characters are now handled
correctly in picture lines. Using <code class="inline"><span class="i">@#</span></code>
 and <code class="inline">~~</code>
 together will now
produce a compile-time error, as those format fields are incompatible.
<a href="perlform.html">perlform</a> has been improved, and miscellaneous bugs fixed.</p>
<a name="Stacked-filetest-operators"></a><h2>Stacked filetest operators</h2>
<p>As a new form of syntactic sugar, it&#39;s now possible to stack up filetest
operators. You can now write <code class="inline">-f -w -x <span class="i">$file</span></code>
 in a row to mean
<code class="inline">-x <span class="i">$file</span> &amp;&amp; -w <span class="i">_</span> &amp;&amp; -f <span class="i">_</span></code>
. See <a href="functions/-X.html">-X</a>.</p>
<a name="Modules-and-Pragmata"></a><h1>Modules and Pragmata</h1>
<ul>
<li><a name="Benchmark"></a><b>Benchmark</b>
<p>In <code class="inline"><span class="w">Benchmark</span></code>
, cmpthese() and timestr() now use the time statistics of
children instead of parent when the selected style is &#39;nop&#39;.</p>
</li>
<li><a name="Carp"></a><b>Carp</b>
<p>The error messages produced by <code class="inline"><span class="w">Carp</span></code>
 now include spaces between the
arguments in function argument lists: this makes long error messages
appear more nicely in browsers and other tools.</p>
</li>
<li><a name="Exporter"></a><b>Exporter</b>
<p><code class="inline"><span class="w">Exporter</span></code>
 will now recognize grouping tags (such as <code class="inline"><span class="j">:</span><span class="w">name</span></code>
) anywhere
in the import list, not only at the beginning.</p>
</li>
<li><a name="FindBin"></a><b>FindBin</b>
<p>A function <code class="inline"><span class="w">again</span></code>
 is provided to resolve problems where modules in different
directories wish to use FindBin.</p>
</li>
<li><a name="List%3a%3aUtil"></a><b>List::Util</b>
<p>You can now weaken references to read only values.</p>
</li>
<li><a name="threads%3a%3ashared"></a><b>threads::shared</b>
<p><code class="inline"><span class="w">cond_wait</span></code>
 has a new two argument form. <code class="inline"><span class="w">cond_timedwait</span></code>
 has been added.</p>
</li>
</ul>
<a name="Utility-Changes"></a><h1>Utility Changes</h1>
<p><code class="inline"><span class="w">find2perl</span></code>
 now assumes <code class="inline">-<a class="l_k" href="functions/print.html">print</a></code>
 as a default action. Previously, it
needed to be specified explicitly.</p>
<p>A new utility, <code class="inline"><span class="w">prove</span></code>
, makes it easy to run an individual regression test
at the command line. <code class="inline"><span class="w">prove</span></code>
 is part of Test::Harness, which users of earlier
Perl versions can install from CPAN.</p>
<p>The perl debugger now supports a <code class="inline"><span class="w">save</span></code>
 command, to save the current
history to a file, and an <code class="inline"><span class="w">i</span></code>
 command, which prints the inheritance tree
of its argument (if the <code class="inline"><span class="w">Class::ISA</span></code>
 module is installed.)</p>
<a name="Documentation"></a><h1>Documentation</h1>
<p>The documentation has been revised in places to produce more standard manpages.</p>
<p>The long-existing feature of <code class="inline"><span class="q">/(?{...})/</span></code>
 regexps setting <code class="inline"><span class="i">$_</span></code>
 and pos()
is now documented.</p>
<a name="Performance-Enhancements"></a><h1>Performance Enhancements</h1>
<p>Sorting arrays in place (<code class="inline"><span class="i">@a</span> = <a class="l_k" href="functions/sort.html">sort</a> <span class="i">@a</span></code>
) is now optimized to avoid
making a temporary copy of the array.</p>
<p>The operations involving case mapping on UTF-8 strings (uc(), lc(),
<code class="inline"><span class="q">//i</span></code>
, etc.) have been greatly speeded up.</p>
<p>Access to elements of lexical arrays via a numeric constant between 0 and
255 is now faster. (This used to be only the case for global arrays.)</p>
<a name="Selected-Bug-Fixes"></a><h1>Selected Bug Fixes</h1>
<a name="UTF-8-bugs"></a><h2>UTF-8 bugs</h2>
<p>Using substr() on a UTF-8 string could cause subsequent accesses on that
string to return garbage. This was due to incorrect UTF-8 offsets being
cached, and is now fixed.</p>
<p>join() could return garbage when the same join() statement was used to
process 8 bit data having earlier processed UTF-8 data, due to the flags
on that statement&#39;s temporary workspace not being reset correctly. This
is now fixed.</p>
<p>Using Unicode keys with tied hashes should now work correctly.</p>
<p>chop() and chomp() used to mangle UTF-8 strings.  This has been fixed.</p>
<p>sprintf() used to misbehave when the format string was in UTF-8. This is
now fixed.</p>
<a name="Threading-bugs"></a><h2>Threading bugs</h2>
<p>Hashes with the <code class="inline"><span class="j">:</span><span class="w">unique</span></code>
 attribute weren&#39;t made read-only in new
threads. They are now.</p>
<a name="More-bugs"></a><h2>More bugs</h2>
<p><code class="inline"><span class="i">$a</span> .. <span class="i">$b</span></code>
 will now work as expected when either $a or $b is <code class="inline"><a class="l_k" href="functions/undef.html">undef</a></code>.</p>
<p>Reading $^E now preserves $!. Previously, the C code implementing $^E
did not preserve <code class="inline"><span class="w">errno</span></code>
, so reading $^E could cause <code class="inline"><span class="w">errno</span></code>
 and therefore
<code class="inline"><span class="i">$!</span></code>
 to change unexpectedly.</p>
<p><code class="inline"><span class="w">strict</span></code>
 wasn&#39;t in effect in regexp-eval blocks (<code class="inline"><span class="q">/(?{...})/</span></code>
).</p>
<a name="New-or-Changed-Diagnostics"></a><h1>New or Changed Diagnostics</h1>
<p>A new deprecation warning, <i>Deprecated use of my() in false conditional</i>,
has been added, to warn against the use of the dubious and deprecated
construct</p>
<pre class="verbatim"><ol><li>    <a class="l_k" href="functions/my.html">my</a> <span class="i">$x</span> if <span class="n">0</span><span class="sc">;</span></li></ol></pre><p>See <a href="perldiag.html">perldiag</a>.</p>
<p>The fatal error <i>DESTROY created new reference to dead object</i> is now
documented in <a href="perldiag.html">perldiag</a>.</p>
<p>A new error, <i>%ENV is aliased to %s</i>, is produced when taint checks are
enabled and when <code class="inline"><span class="i">*ENV</span></code>
 has been aliased (and thus doesn&#39;t reflect the
program&#39;s environment anymore.)</p>
<a name="Changed-Internals"></a><h1>Changed Internals</h1>
<p>These news matter to you only if you either write XS code or like to
know about or hack Perl internals (using Devel::Peek or any of the
<code class="inline"><span class="w">B::</span></code>
 modules counts), or like to run Perl with the <code class="inline">-<span class="w">D</span></code>
 option.</p>
<a name="Reordering-of-SVt_*-constants"></a><h2>Reordering of SVt_* constants</h2>
<p>The relative ordering of constants that define the various types of <code class="inline"><span class="w">SV</span></code>

have changed; in particular, <code class="inline"><span class="w">SVt_PVGV</span></code>
 has been moved before <code class="inline"><span class="w">SVt_PVLV</span></code>
,
<code class="inline"><span class="w">SVt_PVAV</span></code>
, <code class="inline"><span class="w">SVt_PVHV</span></code>
 and <code class="inline"><span class="w">SVt_PVCV</span></code>
.  This is unlikely to make any
difference unless you have code that explicitly makes assumptions about that
ordering. (The inheritance hierarchy of <code class="inline"><span class="w">B::</span>*</code>
 objects has been changed
to reflect this.)</p>
<a name="Removal-of-CPP-symbols"></a><h2>Removal of CPP symbols</h2>
<p>The C preprocessor symbols <code class="inline"><span class="w">PERL_PM_APIVERSION</span></code>
 and
<code class="inline"><span class="w">PERL_XS_APIVERSION</span></code>
, which were supposed to give the version number of
the oldest perl binary-compatible (resp. source-compatible) with the
present one, were not used, and sometimes had misleading values. They have
been removed.</p>
<a name="Less-space-is-used-by-ops"></a><h2>Less space is used by ops</h2>
<p>The <code class="inline"><span class="w">BASEOP</span></code>
 structure now uses less space. The <code class="inline"><span class="w">op_seq</span></code>
 field has been
removed and replaced by two one-bit fields, <code class="inline"><span class="w">op_opt</span></code>
 and <code class="inline"><span class="w">op_static</span></code>
.
<code class="inline"><span class="w">opt_type</span></code>
 is now 9 bits long. (Consequently, the <code class="inline"><span class="w">B::OP</span></code>
 class doesn&#39;t
provide an <code class="inline"><span class="w">seq</span></code>
 method anymore.)</p>
<a name="New-parser"></a><h2>New parser</h2>
<p>perl&#39;s parser is now generated by bison (it used to be generated by
byacc.) As a result, it seems to be a bit more robust.</p>
<a name="Configuration-and-Building"></a><h1>Configuration and Building</h1>
<p><code class="inline"><span class="w">Configure</span></code>
 now invokes callbacks regardless of the value of the variable
they are called for. Previously callbacks were only invoked in the
<code class="inline">case $variable $define)</code> branch. This change should only affect platform
maintainers writing configuration hints files.</p>
<p>The portability and cleanliness of the Win32 makefiles has been improved.</p>
<a name="Known-Problems"></a><h1>Known Problems</h1>
<p>There are still a couple of problems in the implementation of the lexical
<code class="inline"><span class="i">$_</span></code>
: it doesn&#39;t work inside <code class="inline"><span class="q">/(?{...})/</span></code>
 blocks and with regard to the
reverse() built-in used without arguments. (See the TODO tests in
<i>t/op/mydef.t</i>.)</p>
<a name="Platform-Specific-Problems"></a><h2>Platform Specific Problems</h2>
<p>The test <i>ext/IPC/SysV/t/ipcsysv.t</i> may fail on OpenBSD. This hasn&#39;t been
diagnosed yet.</p>
<p>On some configurations on AIX 5, one test in <i>lib/Time/Local.t</i> fails.
When configured with long doubles, perl may fail tests 224-236 in
<i>t/op/pow.t</i> on the same platform.</p>
<p>For threaded builds, <i>ext/threads/shared/t/wait.t</i> has been reported to
fail some tests on HP-UX 10.20.</p>
<a name="To-do-for-perl-5.10.0"></a><h1>To-do for perl 5.10.0</h1>
<p>This is a non-exhaustive, non-ordered, non-contractual and non-definitive
list of things to do (or nice to have) for perl 5.10.0 :</p>
<p>Clean up and finish support for assertions. See <a href="http://search.cpan.org/perldoc/assertions">assertions</a>.</p>
<p>Reimplement the mechanism of lexical pragmas to be more extensible. Fix
current pragmas that don&#39;t work well (or at all) with lexical scopes or in
run-time eval(STRING) (<code class="inline"><a class="l_k" href="functions/sort.html">sort</a></code>, <code class="inline"><span class="w">re</span></code>
, <code class="inline"><span class="w">encoding</span></code>
 for example). MJD has a
preliminary patch that implements this.</p>
<p>Fix (or rewrite) the implementation of the <code class="inline"><span class="q">/(?{...})/</span></code>
 closures.</p>
<p>Conversions from byte strings to UTF-8 currently map high bit characters
to Unicode without translation (or, depending on how you look at it, by
implicitly assuming that the byte strings are in Latin-1). As perl assumes
the C locale by default, upgrading a string to UTF-8 may change the
meaning of its contents regarding character classes, case mapping, etc.
This should probably emit a warning (at least).</p>
<p>Introduce a new special block, UNITCHECK, which is run at the end of a
compilation unit (module, file, eval(STRING) block). This will correspond to
the Perl 6 CHECK. Perl 5&#39;s CHECK cannot be changed or removed because the
O.pm/B.pm backend framework depends on it.</p>
<p>Study the possibility of adding a new prototype character, <code class="inline"><span class="w">_</span></code>
, meaning
&quot;this argument defaults to $_&quot;.</p>
<p>Make the peephole optimizer optional.</p>
<p>Allow lexical aliases (maybe via the syntax <code class="inline"><a class="l_k" href="functions/my.html">my</a> \<span class="i">$alias</span> = \<span class="i">$foo</span></code>
.</p>
<p>Fix the bugs revealed by running the test suite with the <code class="inline">-t</code>
 switch (via
<code class="inline"><span class="w">make</span> <span class="w">test</span>.<span class="w">taintwarn</span></code>
).</p>
<p>Make threads more robust.</p>
<p>Make <code class="inline"><a class="l_k" href="functions/no.html">no</a> <span class="n">6</span></code>
 and <code class="inline"><a class="l_k" href="functions/no.html">no</a> <span class="v">v6</span></code>
 work (opposite of <code class="inline"><a class="l_k" href="functions/use.html">use</a> <span class="n">5.005</span></code>
, etc.).</p>
<p>A test suite for the B module would be nice.</p>
<p>A ponie.</p>
<a name="Reporting-Bugs"></a><h1>Reporting Bugs</h1>
<p>If you find what you think is a bug, you might check the articles
recently posted to the comp.lang.perl.misc newsgroup and the perl
bug database at <a href="http://bugs.perl.org/">http://bugs.perl.org/</a> .  There may also be
information at <a href="http://www.perl.org/">http://www.perl.org/</a> , the Perl Home Page.</p>
<p>If you believe you have an unreported bug, please run the <b>perlbug</b>
program included with your release.  Be sure to trim your bug down
to a tiny but sufficient test case.  Your bug report, along with the
output of <code class="inline"><span class="w">perl</span> -<span class="w">V</span></code>
, will be sent off to perlbug@perl.org to be
analysed by the Perl porting team.</p>
<a name="SEE-ALSO"></a><h1>SEE ALSO</h1>
<p>The <i>Changes</i> file for exhaustive details on what changed.</p>
<p>The <i>INSTALL</i> file for how to build Perl.</p>
<p>The <i>README</i> file for general stuff.</p>
<p>The <i>Artistic</i> and <i>Copying</i> files for copyright information.</p>




  <div id="page_index">
    <div id="page_index_header">
      <div id="page_index_close"><a href="#" onClick="pageIndex.hide();return false;"></a></div>
      <div id="page_index_title"><span class="page_index_top">Page index</span></div>
      <div id="page_index_topright"></div>
    </div>
    <div id="page_index_content">
      <ul><li><a href="#NAME">NAME</a><li><a href="#DESCRIPTION">DESCRIPTION</a><li><a href="#Incompatible-Changes">Incompatible Changes</a><ul><li><a href="#substr()-lvalues-are-no-longer-fixed-length">substr() lvalues are no longer fixed-length</a><li><a href="#The-%3aunique-attribute-is-only-meaningful-for-globals">The :unique attribute is only meaningful for globals</a></ul><li><a href="#Core-Enhancements">Core Enhancements</a><ul><li><a href="#Lexical-%24_">Lexical $_</a><li><a href="#Tied-hashes-in-scalar-context">Tied hashes in scalar context</a><li><a href="#Formats">Formats</a><li><a href="#Stacked-filetest-operators">Stacked filetest operators</a></ul><li><a href="#Modules-and-Pragmata">Modules and Pragmata</a><li><a href="#Utility-Changes">Utility Changes</a><li><a href="#Documentation">Documentation</a><li><a href="#Performance-Enhancements">Performance Enhancements</a><li><a href="#Selected-Bug-Fixes">Selected Bug Fixes</a><ul><li><a href="#UTF-8-bugs">UTF-8 bugs</a><li><a href="#Threading-bugs">Threading bugs</a><li><a href="#More-bugs">More bugs</a></ul><li><a href="#New-or-Changed-Diagnostics">New or Changed Diagnostics</a><li><a href="#Changed-Internals">Changed Internals</a><ul><li><a href="#Reordering-of-SVt_*-constants">Reordering of SVt_* constants</a><li><a href="#Removal-of-CPP-symbols">Removal of CPP symbols</a><li><a href="#Less-space-is-used-by-ops">Less space is used by ops</a><li><a href="#New-parser">New parser</a></ul><li><a href="#Configuration-and-Building">Configuration and Building</a><li><a href="#Known-Problems">Known Problems</a><ul><li><a href="#Platform-Specific-Problems">Platform Specific Problems</a></ul><li><a href="#To-do-for-perl-5.10.0">To-do for perl 5.10.0</a><li><a href="#Reporting-Bugs">Reporting Bugs</a><li><a href="#SEE-ALSO">SEE ALSO</a></ul>
    </div>
    <div id="page_index_footer">
      <div id="page_index_bottomleft"></div>
      <div id="page_index_bottom"><span class="page_index_bottom"></span></div>
      <div id="page_index_resize"></div>
    </div>
  </div>


	    &nbsp;
          </div>
          <div id="content_footer">
          </div>
        </div>
        <div id="right_column">
          <div class="side_group">
	    
            <div class="side_panel tools_panel">
              <p>Recently read</p>
              <div id="recent_pages"></div>
            </div>
            <div class="side_panel tools_panel">
              <p>Tools</p>
              <ul>
		<li><a href="preferences.html">Preferences</a>
              </ul>
            </div>
          </div>
        </div>
        <div class="clear"></div>
      </div>
      
      <div id="footer">
	<div id="footer_content">
	  
	</div>
      </div>
      
    </div>
      <script language="JavaScript" src="static/combined-20090809.js" type="text/javascript"></script>
<script language="JavaScript" type="text/javascript">
  perldoc.setPath(0);
  perldoc.pageName    = 'perl591delta';
  perldoc.pageAddress = 'perl591delta.html';
  perldoc.contentPage = 1;
</script>
    
  </body>
</html>