| 1 | .\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 |
| 2 | .\" |
| 3 | .\" Standard preamble: |
| 4 | .\" ======================================================================== |
| 5 | .de Sh \" Subsection heading |
| 6 | .br |
| 7 | .if t .Sp |
| 8 | .ne 5 |
| 9 | .PP |
| 10 | \fB\\$1\fR |
| 11 | .PP |
| 12 | .. |
| 13 | .de Sp \" Vertical space (when we can't use .PP) |
| 14 | .if t .sp .5v |
| 15 | .if n .sp |
| 16 | .. |
| 17 | .de Vb \" Begin verbatim text |
| 18 | .ft CW |
| 19 | .nf |
| 20 | .ne \\$1 |
| 21 | .. |
| 22 | .de Ve \" End verbatim text |
| 23 | .ft R |
| 24 | .fi |
| 25 | .. |
| 26 | .\" Set up some character translations and predefined strings. \*(-- will |
| 27 | .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left |
| 28 | .\" double quote, and \*(R" will give a right double quote. | will give a |
| 29 | .\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to |
| 30 | .\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' |
| 31 | .\" expand to `' in nroff, nothing in troff, for use with C<>. |
| 32 | .tr \(*W-|\(bv\*(Tr |
| 33 | .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' |
| 34 | .ie n \{\ |
| 35 | . ds -- \(*W- |
| 36 | . ds PI pi |
| 37 | . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch |
| 38 | . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch |
| 39 | . ds L" "" |
| 40 | . ds R" "" |
| 41 | . ds C` "" |
| 42 | . ds C' "" |
| 43 | 'br\} |
| 44 | .el\{\ |
| 45 | . ds -- \|\(em\| |
| 46 | . ds PI \(*p |
| 47 | . ds L" `` |
| 48 | . ds R" '' |
| 49 | 'br\} |
| 50 | .\" |
| 51 | .\" If the F register is turned on, we'll generate index entries on stderr for |
| 52 | .\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index |
| 53 | .\" entries marked with X<> in POD. Of course, you'll have to process the |
| 54 | .\" output yourself in some meaningful fashion. |
| 55 | .if \nF \{\ |
| 56 | . de IX |
| 57 | . tm Index:\\$1\t\\n%\t"\\$2" |
| 58 | .. |
| 59 | . nr % 0 |
| 60 | . rr F |
| 61 | .\} |
| 62 | .\" |
| 63 | .\" For nroff, turn off justification. Always turn off hyphenation; it makes |
| 64 | .\" way too many mistakes in technical documents. |
| 65 | .hy 0 |
| 66 | .if n .na |
| 67 | .\" |
| 68 | .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). |
| 69 | .\" Fear. Run. Save yourself. No user-serviceable parts. |
| 70 | . \" fudge factors for nroff and troff |
| 71 | .if n \{\ |
| 72 | . ds #H 0 |
| 73 | . ds #V .8m |
| 74 | . ds #F .3m |
| 75 | . ds #[ \f1 |
| 76 | . ds #] \fP |
| 77 | .\} |
| 78 | .if t \{\ |
| 79 | . ds #H ((1u-(\\\\n(.fu%2u))*.13m) |
| 80 | . ds #V .6m |
| 81 | . ds #F 0 |
| 82 | . ds #[ \& |
| 83 | . ds #] \& |
| 84 | .\} |
| 85 | . \" simple accents for nroff and troff |
| 86 | .if n \{\ |
| 87 | . ds ' \& |
| 88 | . ds ` \& |
| 89 | . ds ^ \& |
| 90 | . ds , \& |
| 91 | . ds ~ ~ |
| 92 | . ds / |
| 93 | .\} |
| 94 | .if t \{\ |
| 95 | . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" |
| 96 | . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' |
| 97 | . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' |
| 98 | . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' |
| 99 | . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' |
| 100 | . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' |
| 101 | .\} |
| 102 | . \" troff and (daisy-wheel) nroff accents |
| 103 | .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' |
| 104 | .ds 8 \h'\*(#H'\(*b\h'-\*(#H' |
| 105 | .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] |
| 106 | .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' |
| 107 | .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' |
| 108 | .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] |
| 109 | .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] |
| 110 | .ds ae a\h'-(\w'a'u*4/10)'e |
| 111 | .ds Ae A\h'-(\w'A'u*4/10)'E |
| 112 | . \" corrections for vroff |
| 113 | .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' |
| 114 | .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' |
| 115 | . \" for low resolution devices (crt and lpr) |
| 116 | .if \n(.H>23 .if \n(.V>19 \ |
| 117 | \{\ |
| 118 | . ds : e |
| 119 | . ds 8 ss |
| 120 | . ds o a |
| 121 | . ds d- d\h'-1'\(ga |
| 122 | . ds D- D\h'-1'\(hy |
| 123 | . ds th \o'bp' |
| 124 | . ds Th \o'LP' |
| 125 | . ds ae ae |
| 126 | . ds Ae AE |
| 127 | .\} |
| 128 | .rm #[ #] #H #V #F C |
| 129 | .\" ======================================================================== |
| 130 | .\" |
| 131 | .IX Title "PERL58DELTA 1" |
| 132 | .TH PERL58DELTA 1 "2006-01-07" "perl v5.8.8" "Perl Programmers Reference Guide" |
| 133 | .SH "NAME" |
| 134 | perl58delta \- what is new for perl v5.8.0 |
| 135 | .SH "DESCRIPTION" |
| 136 | .IX Header "DESCRIPTION" |
| 137 | This document describes differences between the 5.6.0 release and |
| 138 | the 5.8.0 release. |
| 139 | .PP |
| 140 | Many of the bug fixes in 5.8.0 were already seen in the 5.6.1 |
| 141 | maintenance release since the two releases were kept closely |
| 142 | coordinated (while 5.8.0 was still called 5.7.something). |
| 143 | .PP |
| 144 | Changes that were integrated into the 5.6.1 release are marked \f(CW\*(C`[561]\*(C'\fR. |
| 145 | Many of these changes have been further developed since 5.6.1 was released, |
| 146 | those are marked \f(CW\*(C`[561+]\*(C'\fR. |
| 147 | .PP |
| 148 | You can see the list of changes in the 5.6.1 release (both from the |
| 149 | 5.005_03 release and the 5.6.0 release) by reading perl561delta. |
| 150 | .SH "Highlights In 5.8.0" |
| 151 | .IX Header "Highlights In 5.8.0" |
| 152 | .IP "\(bu" 4 |
| 153 | Better Unicode support |
| 154 | .IP "\(bu" 4 |
| 155 | New \s-1IO\s0 Implementation |
| 156 | .IP "\(bu" 4 |
| 157 | New Thread Implementation |
| 158 | .IP "\(bu" 4 |
| 159 | Better Numeric Accuracy |
| 160 | .IP "\(bu" 4 |
| 161 | Safe Signals |
| 162 | .IP "\(bu" 4 |
| 163 | Many New Modules |
| 164 | .IP "\(bu" 4 |
| 165 | More Extensive Regression Testing |
| 166 | .SH "Incompatible Changes" |
| 167 | .IX Header "Incompatible Changes" |
| 168 | .Sh "Binary Incompatibility" |
| 169 | .IX Subsection "Binary Incompatibility" |
| 170 | \&\fBPerl 5.8 is not binary compatible with earlier releases of Perl.\fR |
| 171 | .PP |
| 172 | \&\fBYou have to recompile your \s-1XS\s0 modules.\fR |
| 173 | .PP |
| 174 | (Pure Perl modules should continue to work.) |
| 175 | .PP |
| 176 | The major reason for the discontinuity is the new \s-1IO\s0 architecture |
| 177 | called PerlIO. PerlIO is the default configuration because without |
| 178 | it many new features of Perl 5.8 cannot be used. In other words: |
| 179 | you just have to recompile your modules containing \s-1XS\s0 code, sorry |
| 180 | about that. |
| 181 | .PP |
| 182 | In future releases of Perl, non-PerlIO aware \s-1XS\s0 modules may become |
| 183 | completely unsupported. This shouldn't be too difficult for module |
| 184 | authors, however: PerlIO has been designed as a drop-in replacement |
| 185 | (at the source code level) for the stdio interface. |
| 186 | .PP |
| 187 | Depending on your platform, there are also other reasons why |
| 188 | we decided to break binary compatibility, please read on. |
| 189 | .Sh "64\-bit platforms and malloc" |
| 190 | .IX Subsection "64-bit platforms and malloc" |
| 191 | If your pointers are 64 bits wide, the Perl malloc is no longer being |
| 192 | used because it does not work well with 8\-byte pointers. Also, |
| 193 | usually the system mallocs on such platforms are much better optimized |
| 194 | for such large memory models than the Perl malloc. Some memory-hungry |
| 195 | Perl applications like the \s-1PDL\s0 don't work well with Perl's malloc. |
| 196 | Finally, other applications than Perl (such as mod_perl) tend to prefer |
| 197 | the system malloc. Such platforms include Alpha and 64\-bit \s-1HPPA\s0, |
| 198 | \&\s-1MIPS\s0, \s-1PPC\s0, and Sparc. |
| 199 | .Sh "\s-1AIX\s0 Dynaloading" |
| 200 | .IX Subsection "AIX Dynaloading" |
| 201 | The \s-1AIX\s0 dynaloading now uses in \s-1AIX\s0 releases 4.3 and newer the native |
| 202 | dlopen interface of \s-1AIX\s0 instead of the old emulated interface. This |
| 203 | change will probably break backward compatibility with compiled |
| 204 | modules. The change was made to make Perl more compliant with other |
| 205 | applications like mod_perl which are using the \s-1AIX\s0 native interface. |
| 206 | .ie n .Sh "Attributes for ""my"" variables now handled at run-time" |
| 207 | .el .Sh "Attributes for \f(CWmy\fP variables now handled at run-time" |
| 208 | .IX Subsection "Attributes for my variables now handled at run-time" |
| 209 | The \f(CW\*(C`my EXPR : ATTRS\*(C'\fR syntax now applies variable attributes at |
| 210 | run\-time. (Subroutine and \f(CW\*(C`our\*(C'\fR variables still get attributes applied |
| 211 | at compile\-time.) See attributes for additional details. In particular, |
| 212 | however, this allows variable attributes to be useful for \f(CW\*(C`tie\*(C'\fR interfaces, |
| 213 | which was a deficiency of earlier releases. Note that the new semantics |
| 214 | doesn't work with the Attribute::Handlers module (as of version 0.76). |
| 215 | .Sh "Socket Extension Dynamic in \s-1VMS\s0" |
| 216 | .IX Subsection "Socket Extension Dynamic in VMS" |
| 217 | The Socket extension is now dynamically loaded instead of being |
| 218 | statically built in. This may or may not be a problem with ancient |
| 219 | \&\s-1TCP/IP\s0 stacks of \s-1VMS:\s0 we do not know since we weren't able to test |
| 220 | Perl in such configurations. |
| 221 | .Sh "IEEE-format Floating Point Default on OpenVMS Alpha" |
| 222 | .IX Subsection "IEEE-format Floating Point Default on OpenVMS Alpha" |
| 223 | Perl now uses \s-1IEEE\s0 format (T_FLOAT) as the default internal floating |
| 224 | point format on OpenVMS Alpha, potentially breaking binary compatibility |
| 225 | with external libraries or existing data. G_FLOAT is still available as |
| 226 | a configuration option. The default on \s-1VAX\s0 (D_FLOAT) has not changed. |
| 227 | .ie n .Sh "New Unicode Semantics (no more ""use utf8"", almost)" |
| 228 | .el .Sh "New Unicode Semantics (no more \f(CWuse utf8\fP, almost)" |
| 229 | .IX Subsection "New Unicode Semantics (no more use utf8, almost)" |
| 230 | Previously in Perl 5.6 to use Unicode one would say \*(L"use utf8\*(R" and |
| 231 | then the operations (like string concatenation) were Unicode-aware |
| 232 | in that lexical scope. |
| 233 | .PP |
| 234 | This was found to be an inconvenient interface, and in Perl 5.8 the |
| 235 | Unicode model has completely changed: now the \*(L"Unicodeness\*(R" is bound |
| 236 | to the data itself, and for most of the time \*(L"use utf8\*(R" is not needed |
| 237 | at all. The only remaining use of \*(L"use utf8\*(R" is when the Perl script |
| 238 | itself has been written in the \s-1UTF\-8\s0 encoding of Unicode. (\s-1UTF\-8\s0 has |
| 239 | not been made the default since there are many Perl scripts out there |
| 240 | that are using various national eight-bit character sets, which would |
| 241 | be illegal in \s-1UTF\-8\s0.) |
| 242 | .PP |
| 243 | See perluniintro for the explanation of the current model, |
| 244 | and utf8 for the current use of the utf8 pragma. |
| 245 | .Sh "New Unicode Properties" |
| 246 | .IX Subsection "New Unicode Properties" |
| 247 | Unicode \fIscripts\fR are now supported. Scripts are similar to (and superior |
| 248 | to) Unicode \fIblocks\fR. The difference between scripts and blocks is that |
| 249 | scripts are the glyphs used by a language or a group of languages, while |
| 250 | the blocks are more artificial groupings of (mostly) 256 characters based |
| 251 | on the Unicode numbering. |
| 252 | .PP |
| 253 | In general, scripts are more inclusive, but not universally so. For |
| 254 | example, while the script \f(CW\*(C`Latin\*(C'\fR includes all the Latin characters and |
| 255 | their various diacritic-adorned versions, it does not include the various |
| 256 | punctuation or digits (since they are not solely \f(CW\*(C`Latin\*(C'\fR). |
| 257 | .PP |
| 258 | A number of other properties are now supported, including \f(CW\*(C`\ep{L&}\*(C'\fR, |
| 259 | \&\f(CW\*(C`\ep{Any}\*(C'\fR \f(CW\*(C`\ep{Assigned}\*(C'\fR, \f(CW\*(C`\ep{Unassigned}\*(C'\fR, \f(CW\*(C`\ep{Blank}\*(C'\fR [561] and |
| 260 | \&\f(CW\*(C`\ep{SpacePerl}\*(C'\fR [561] (along with their \f(CW\*(C`\eP{...}\*(C'\fR versions, of course). |
| 261 | See perlunicode for details, and more additions. |
| 262 | .PP |
| 263 | The \f(CW\*(C`In\*(C'\fR or \f(CW\*(C`Is\*(C'\fR prefix to names used with the \f(CW\*(C`\ep{...}\*(C'\fR and \f(CW\*(C`\eP{...}\*(C'\fR |
| 264 | are now almost always optional. The only exception is that a \f(CW\*(C`In\*(C'\fR prefix |
| 265 | is required to signify a Unicode block when a block name conflicts with a |
| 266 | script name. For example, \f(CW\*(C`\ep{Tibetan}\*(C'\fR refers to the script, while |
| 267 | \&\f(CW\*(C`\ep{InTibetan}\*(C'\fR refers to the block. When there is no name conflict, you |
| 268 | can omit the \f(CW\*(C`In\*(C'\fR from the block name (e.g. \f(CW\*(C`\ep{BraillePatterns}\*(C'\fR), but |
| 269 | to be safe, it's probably best to always use the \f(CW\*(C`In\*(C'\fR). |
| 270 | .Sh "\s-1REF\s0(...) Instead Of \s-1SCALAR\s0(...)" |
| 271 | .IX Subsection "REF(...) Instead Of SCALAR(...)" |
| 272 | A reference to a reference now stringifies as \*(L"\s-1REF\s0(0x81485ec)\*(R" instead |
| 273 | of \*(L"\s-1SCALAR\s0(0x81485ec)\*(R" in order to be more consistent with the return |
| 274 | value of \fIref()\fR. |
| 275 | .Sh "pack/unpack D/F recycled" |
| 276 | .IX Subsection "pack/unpack D/F recycled" |
| 277 | The undocumented pack/unpack template letters D/F have been recycled |
| 278 | for better use: now they stand for long double (if supported by the |
| 279 | platform) and \s-1NV\s0 (Perl internal floating point type). (They used |
| 280 | to be aliases for d/f, but you never knew that.) |
| 281 | .Sh "\fIglob()\fP now returns filenames in alphabetical order" |
| 282 | .IX Subsection "glob() now returns filenames in alphabetical order" |
| 283 | The list of filenames from \fIglob()\fR (or <...>) is now by default sorted |
| 284 | alphabetically to be csh-compliant (which is what happened before |
| 285 | in most \s-1UNIX\s0 platforms). (\fIbsd_glob()\fR does still sort platform |
| 286 | natively, \s-1ASCII\s0 or \s-1EBCDIC\s0, unless \s-1GLOB_ALPHASORT\s0 is specified.) [561] |
| 287 | .Sh "Deprecations" |
| 288 | .IX Subsection "Deprecations" |
| 289 | .IP "\(bu" 4 |
| 290 | The semantics of bless(\s-1REF\s0, \s-1REF\s0) were unclear and until someone proves |
| 291 | it to make some sense, it is forbidden. |
| 292 | .IP "\(bu" 4 |
| 293 | The obsolete chat2 library that should never have been allowed |
| 294 | to escape the laboratory has been decommissioned. |
| 295 | .IP "\(bu" 4 |
| 296 | Using chdir("") or chdir(undef) instead of explicit \fIchdir()\fR is |
| 297 | doubtful. A failure (think chdir(\fIsome_function()\fR) can lead into |
| 298 | unintended \fIchdir()\fR to the home directory, therefore this behaviour |
| 299 | is deprecated. |
| 300 | .IP "\(bu" 4 |
| 301 | The builtin \fIdump()\fR function has probably outlived most of its |
| 302 | usefulness. The core-dumping functionality will remain in future |
| 303 | available as an explicit call to \f(CW\*(C`CORE::dump()\*(C'\fR, but in future |
| 304 | releases the behaviour of an unqualified \f(CW\*(C`dump()\*(C'\fR call may change. |
| 305 | .IP "\(bu" 4 |
| 306 | The very dusty examples in the eg/ directory have been removed. |
| 307 | Suggestions for new shiny examples welcome but the main issue is that |
| 308 | the examples need to be documented, tested and (most importantly) |
| 309 | maintained. |
| 310 | .IP "\(bu" 4 |
| 311 | The (bogus) escape sequences \e8 and \e9 now give an optional warning |
| 312 | (\*(L"Unrecognized escape passed through\*(R"). There is no need to \e\-escape |
| 313 | any \f(CW\*(C`\ew\*(C'\fR character. |
| 314 | .IP "\(bu" 4 |
| 315 | The *glob{\s-1FILEHANDLE\s0} is deprecated, use *glob{\s-1IO\s0} instead. |
| 316 | .IP "\(bu" 4 |
| 317 | The \f(CW\*(C`package;\*(C'\fR syntax (\f(CW\*(C`package\*(C'\fR without an argument) has been |
| 318 | deprecated. Its semantics were never that clear and its |
| 319 | implementation even less so. If you have used that feature to |
| 320 | disallow all but fully qualified variables, \f(CW\*(C`use strict;\*(C'\fR instead. |
| 321 | .IP "\(bu" 4 |
| 322 | The unimplemented \s-1POSIX\s0 regex features [[.cc.]] and [[=c=]] are still |
| 323 | recognised but now cause fatal errors. The previous behaviour of |
| 324 | ignoring them by default and warning if requested was unacceptable |
| 325 | since it, in a way, falsely promised that the features could be used. |
| 326 | .IP "\(bu" 4 |
| 327 | In future releases, non-PerlIO aware \s-1XS\s0 modules may become completely |
| 328 | unsupported. Since PerlIO is a drop-in replacement for stdio at the |
| 329 | source code level, this shouldn't be that drastic a change. |
| 330 | .IP "\(bu" 4 |
| 331 | Previous versions of perl and some readings of some sections of Camel |
| 332 | \&\s-1III\s0 implied that the \f(CW\*(C`:raw\*(C'\fR \*(L"discipline\*(R" was the inverse of \f(CW\*(C`:crlf\*(C'\fR. |
| 333 | Turning off \*(L"clrfness\*(R" is no longer enough to make a stream truly |
| 334 | binary. So the PerlIO \f(CW\*(C`:raw\*(C'\fR layer (or \*(L"discipline\*(R", to use the Camel |
| 335 | book's older terminology) is now formally defined as being equivalent |
| 336 | to binmode(\s-1FH\s0) \- which is in turn defined as doing whatever is |
| 337 | necessary to pass each byte as-is without any translation. In |
| 338 | particular binmode(\s-1FH\s0) \- and hence \f(CW\*(C`:raw\*(C'\fR \- will now turn off both |
| 339 | \&\s-1CRLF\s0 and \s-1UTF\-8\s0 translation and remove other layers (e.g. :\fIencoding()\fR) |
| 340 | which would modify byte stream. |
| 341 | .IP "\(bu" 4 |
| 342 | The current user-visible implementation of pseudo-hashes (the weird |
| 343 | use of the first array element) is deprecated starting from Perl 5.8.0 |
| 344 | and will be removed in Perl 5.10.0, and the feature will be |
| 345 | implemented differently. Not only is the current interface rather |
| 346 | ugly, but the current implementation slows down normal array and hash |
| 347 | use quite noticeably. The \f(CW\*(C`fields\*(C'\fR pragma interface will remain |
| 348 | available. The \fIrestricted hashes\fR interface is expected to |
| 349 | be the replacement interface (see Hash::Util). If your existing |
| 350 | programs depends on the underlying implementation, consider using |
| 351 | Class::PseudoHash from \s-1CPAN\s0. |
| 352 | .IP "\(bu" 4 |
| 353 | The syntaxes \f(CW\*(C`@a\->[...]\*(C'\fR and \f(CW\*(C`%h\->{...}\*(C'\fR have now been deprecated. |
| 354 | .IP "\(bu" 4 |
| 355 | After years of trying, suidperl is considered to be too complex to |
| 356 | ever be considered truly secure. The suidperl functionality is likely |
| 357 | to be removed in a future release. |
| 358 | .IP "\(bu" 4 |
| 359 | The 5.005 threads model (module \f(CW\*(C`Thread\*(C'\fR) is deprecated and expected |
| 360 | to be removed in Perl 5.10. Multithreaded code should be migrated to |
| 361 | the new ithreads model (see threads, threads::shared and |
| 362 | perlthrtut). |
| 363 | .IP "\(bu" 4 |
| 364 | The long deprecated uppercase aliases for the string comparison |
| 365 | operators (\s-1EQ\s0, \s-1NE\s0, \s-1LT\s0, \s-1LE\s0, \s-1GE\s0, \s-1GT\s0) have now been removed. |
| 366 | .IP "\(bu" 4 |
| 367 | The tr///C and tr///U features have been removed and will not return; |
| 368 | the interface was a mistake. Sorry about that. For similar |
| 369 | functionality, see pack('U0', ...) and pack('C0', ...). [561] |
| 370 | .IP "\(bu" 4 |
| 371 | Earlier Perls treated \*(L"sub foo (@bar)\*(R" as equivalent to \*(L"sub foo (@)\*(R". |
| 372 | The prototypes are now checked better at compile-time for invalid |
| 373 | syntax. An optional warning is generated (\*(L"Illegal character in |
| 374 | prototype...\*(R") but this may be upgraded to a fatal error in a future |
| 375 | release. |
| 376 | .IP "\(bu" 4 |
| 377 | The \f(CW\*(C`exec LIST\*(C'\fR and \f(CW\*(C`system LIST\*(C'\fR operations now produce warnings on |
| 378 | tainted data and in some future release they will produce fatal errors. |
| 379 | .IP "\(bu" 4 |
| 380 | The existing behaviour when localising tied arrays and hashes is wrong, |
| 381 | and will be changed in a future release, so do not rely on the existing |
| 382 | behaviour. See \*(L"Localising Tied Arrays and Hashes Is Broken\*(R". |
| 383 | .SH "Core Enhancements" |
| 384 | .IX Header "Core Enhancements" |
| 385 | .Sh "Unicode Overhaul" |
| 386 | .IX Subsection "Unicode Overhaul" |
| 387 | Unicode in general should be now much more usable than in Perl 5.6.0 |
| 388 | (or even in 5.6.1). Unicode can be used in hash keys, Unicode in |
| 389 | regular expressions should work now, Unicode in tr/// should work now, |
| 390 | Unicode in I/O should work now. See perluniintro for introduction |
| 391 | and perlunicode for details. |
| 392 | .IP "\(bu" 4 |
| 393 | The Unicode Character Database coming with Perl has been upgraded |
| 394 | to Unicode 3.2.0. For more information, see http://www.unicode.org/ . |
| 395 | [561+] (5.6.1 has \s-1UCD\s0 3.0.1.) |
| 396 | .IP "\(bu" 4 |
| 397 | For developers interested in enhancing Perl's Unicode capabilities: |
| 398 | almost all the \s-1UCD\s0 files are included with the Perl distribution in |
| 399 | the \fIlib/unicore\fR subdirectory. The most notable omission, for space |
| 400 | considerations, is the Unihan database. |
| 401 | .IP "\(bu" 4 |
| 402 | The properties \ep{Blank} and \ep{SpacePerl} have been added. \*(L"Blank\*(R" is like |
| 403 | C \fIisblank()\fR, that is, it contains only \*(L"horizontal whitespace\*(R" (the space |
| 404 | character is, the newline isn't), and the \*(L"SpacePerl\*(R" is the Unicode |
| 405 | equivalent of \f(CW\*(C`\es\*(C'\fR (\ep{Space} isn't, since that includes the vertical |
| 406 | tabulator character, whereas \f(CW\*(C`\es\*(C'\fR doesn't.) |
| 407 | .Sp |
| 408 | See \*(L"New Unicode Properties\*(R" earlier in this document for additional |
| 409 | information on changes with Unicode properties. |
| 410 | .Sh "PerlIO is Now The Default" |
| 411 | .IX Subsection "PerlIO is Now The Default" |
| 412 | .IP "\(bu" 4 |
| 413 | \&\s-1IO\s0 is now by default done via PerlIO rather than system's \*(L"stdio\*(R". |
| 414 | PerlIO allows \*(L"layers\*(R" to be \*(L"pushed\*(R" onto a file handle to alter the |
| 415 | handle's behaviour. Layers can be specified at open time via 3\-arg |
| 416 | form of open: |
| 417 | .Sp |
| 418 | .Vb 1 |
| 419 | \& open($fh,'>:crlf :utf8', $path) || ... |
| 420 | .Ve |
| 421 | .Sp |
| 422 | or on already opened handles via extended \f(CW\*(C`binmode\*(C'\fR: |
| 423 | .Sp |
| 424 | .Vb 1 |
| 425 | \& binmode($fh,':encoding(iso-8859-7)'); |
| 426 | .Ve |
| 427 | .Sp |
| 428 | The built-in layers are: unix (low level read/write), stdio (as in |
| 429 | previous Perls), perlio (re\-implementation of stdio buffering in a |
| 430 | portable manner), crlf (does \s-1CRLF\s0 <=> \*(L"\en\*(R" translation as on Win32, |
| 431 | but available on any platform). A mmap layer may be available if |
| 432 | platform supports it (mostly UNIXes). |
| 433 | .Sp |
| 434 | Layers to be applied by default may be specified via the 'open' pragma. |
| 435 | .Sp |
| 436 | See \*(L"Installation and Configuration Improvements\*(R" for the effects |
| 437 | of PerlIO on your architecture name. |
| 438 | .IP "\(bu" 4 |
| 439 | If your platform supports \fIfork()\fR, you can use the list form of \f(CW\*(C`open\*(C'\fR |
| 440 | for pipes. For example: |
| 441 | .Sp |
| 442 | .Vb 1 |
| 443 | \& open KID_PS, "-|", "ps", "aux" or die $!; |
| 444 | .Ve |
| 445 | .Sp |
| 446 | forks the \fIps\fR\|(1) command (without spawning a shell, as there are more |
| 447 | than three arguments to \fIopen()\fR), and reads its standard output via the |
| 448 | \&\f(CW\*(C`KID_PS\*(C'\fR filehandle. See perlipc. |
| 449 | .IP "\(bu" 4 |
| 450 | File handles can be marked as accepting Perl's internal encoding of Unicode |
| 451 | (\s-1UTF\-8\s0 or UTF-EBCDIC depending on platform) by a pseudo layer \*(L":utf8\*(R" : |
| 452 | .Sp |
| 453 | .Vb 1 |
| 454 | \& open($fh,">:utf8","Uni.txt"); |
| 455 | .Ve |
| 456 | .Sp |
| 457 | Note for \s-1EBCDIC\s0 users: the pseudo layer \*(L":utf8\*(R" is erroneously named |
| 458 | for you since it's not \s-1UTF\-8\s0 what you will be getting but instead |
| 459 | \&\s-1UTF\-EBCDIC\s0. See perlunicode, utf8, and |
| 460 | http://www.unicode.org/unicode/reports/tr16/ for more information. |
| 461 | In future releases this naming may change. See perluniintro |
| 462 | for more information about \s-1UTF\-8\s0. |
| 463 | .IP "\(bu" 4 |
| 464 | If your environment variables (\s-1LC_ALL\s0, \s-1LC_CTYPE\s0, \s-1LANG\s0) look like you |
| 465 | want to use \s-1UTF\-8\s0 (any of the variables match \f(CW\*(C`/utf\-?8/i\*(C'\fR), your |
| 466 | \&\s-1STDIN\s0, \s-1STDOUT\s0, \s-1STDERR\s0 handles and the default open layer (see open) |
| 467 | are marked as \s-1UTF\-8\s0. (This feature, like other new features that |
| 468 | combine Unicode and I/O, work only if you are using PerlIO, but that's |
| 469 | the default.) |
| 470 | .Sp |
| 471 | Note that after this Perl really does assume that everything is \s-1UTF\-8:\s0 |
| 472 | for example if some input handle is not, Perl will probably very soon |
| 473 | complain about the input data like this \*(L"Malformed \s-1UTF\-8\s0 ...\*(R" since |
| 474 | any old eight-bit data is not legal \s-1UTF\-8\s0. |
| 475 | .Sp |
| 476 | Note for code authors: if you want to enable your users to use \s-1UTF\-8\s0 |
| 477 | as their default encoding but in your code still have eight-bit I/O streams |
| 478 | (such as images or zip files), you need to explicitly \fIopen()\fR or \fIbinmode()\fR |
| 479 | with \f(CW\*(C`:bytes\*(C'\fR (see \*(L"open\*(R" in perlfunc and \*(L"binmode\*(R" in perlfunc), or you |
| 480 | can just use \f(CW\*(C`binmode(FH)\*(C'\fR (nice for pre\-5.8.0 backward compatibility). |
| 481 | .IP "\(bu" 4 |
| 482 | File handles can translate character encodings from/to Perl's internal |
| 483 | Unicode form on read/write via the \*(L":\fIencoding()\fR\*(R" layer. |
| 484 | .IP "\(bu" 4 |
| 485 | File handles can be opened to \*(L"in memory\*(R" files held in Perl scalars via: |
| 486 | .Sp |
| 487 | .Vb 1 |
| 488 | \& open($fh,'>', \e$variable) || ... |
| 489 | .Ve |
| 490 | .IP "\(bu" 4 |
| 491 | Anonymous temporary files are available without need to |
| 492 | \&'use FileHandle' or other module via |
| 493 | .Sp |
| 494 | .Vb 1 |
| 495 | \& open($fh,"+>", undef) || ... |
| 496 | .Ve |
| 497 | .Sp |
| 498 | That is a literal undef, not an undefined value. |
| 499 | .Sh "ithreads" |
| 500 | .IX Subsection "ithreads" |
| 501 | The new interpreter threads (\*(L"ithreads\*(R" for short) implementation of |
| 502 | multithreading, by Arthur Bergman, replaces the old \*(L"5.005 threads\*(R" |
| 503 | implementation. In the ithreads model any data sharing between |
| 504 | threads must be explicit, as opposed to the model where data sharing |
| 505 | was implicit. See threads and threads::shared, and |
| 506 | perlthrtut. |
| 507 | .PP |
| 508 | As a part of the ithreads implementation Perl will also use |
| 509 | any necessary and detectable reentrant libc interfaces. |
| 510 | .Sh "Restricted Hashes" |
| 511 | .IX Subsection "Restricted Hashes" |
| 512 | A restricted hash is restricted to a certain set of keys, no keys |
| 513 | outside the set can be added. Also individual keys can be restricted |
| 514 | so that the key cannot be deleted and the value cannot be changed. |
| 515 | No new syntax is involved: the Hash::Util module is the interface. |
| 516 | .Sh "Safe Signals" |
| 517 | .IX Subsection "Safe Signals" |
| 518 | Perl used to be fragile in that signals arriving at inopportune moments |
| 519 | could corrupt Perl's internal state. Now Perl postpones handling of |
| 520 | signals until it's safe (between opcodes). |
| 521 | .PP |
| 522 | This change may have surprising side effects because signals no longer |
| 523 | interrupt Perl instantly. Perl will now first finish whatever it was |
| 524 | doing, like finishing an internal operation (like \fIsort()\fR) or an |
| 525 | external operation (like an I/O operation), and only then look at any |
| 526 | arrived signals (and before starting the next operation). No more corrupt |
| 527 | internal state since the current operation is always finished first, |
| 528 | but the signal may take more time to get heard. Note that breaking |
| 529 | out from potentially blocking operations should still work, though. |
| 530 | .Sh "Understanding of Numbers" |
| 531 | .IX Subsection "Understanding of Numbers" |
| 532 | In general a lot of fixing has happened in the area of Perl's |
| 533 | understanding of numbers, both integer and floating point. Since in |
| 534 | many systems the standard number parsing functions like \f(CW\*(C`strtoul()\*(C'\fR |
| 535 | and \f(CW\*(C`atof()\*(C'\fR seem to have bugs, Perl tries to work around their |
| 536 | deficiencies. This results hopefully in more accurate numbers. |
| 537 | .PP |
| 538 | Perl now tries internally to use integer values in numeric conversions |
| 539 | and basic arithmetics (+ \- * /) if the arguments are integers, and |
| 540 | tries also to keep the results stored internally as integers. |
| 541 | This change leads to often slightly faster and always less lossy |
| 542 | arithmetics. (Previously Perl always preferred floating point numbers |
| 543 | in its math.) |
| 544 | .Sh "Arrays now always interpolate into double-quoted strings [561]" |
| 545 | .IX Subsection "Arrays now always interpolate into double-quoted strings [561]" |
| 546 | In double-quoted strings, arrays now interpolate, no matter what. The |
| 547 | behavior in earlier versions of perl 5 was that arrays would interpolate |
| 548 | into strings if the array had been mentioned before the string was |
| 549 | compiled, and otherwise Perl would raise a fatal compile-time error. |
| 550 | In versions 5.000 through 5.003, the error was |
| 551 | .PP |
| 552 | .Vb 1 |
| 553 | \& Literal @example now requires backslash |
| 554 | .Ve |
| 555 | .PP |
| 556 | In versions 5.004_01 through 5.6.0, the error was |
| 557 | .PP |
| 558 | .Vb 1 |
| 559 | \& In string, @example now must be written as \e@example |
| 560 | .Ve |
| 561 | .PP |
| 562 | The idea here was to get people into the habit of writing |
| 563 | \&\f(CW"fred\e@example.com"\fR when they wanted a literal \f(CW\*(C`@\*(C'\fR sign, just as |
| 564 | they have always written \f(CW"Give me back my \e$5"\fR when they wanted a |
| 565 | literal \f(CW\*(C`$\*(C'\fR sign. |
| 566 | .PP |
| 567 | Starting with 5.6.1, when Perl now sees an \f(CW\*(C`@\*(C'\fR sign in a |
| 568 | double-quoted string, it \fIalways\fR attempts to interpolate an array, |
| 569 | regardless of whether or not the array has been used or declared |
| 570 | already. The fatal error has been downgraded to an optional warning: |
| 571 | .PP |
| 572 | .Vb 1 |
| 573 | \& Possible unintended interpolation of @example in string |
| 574 | .Ve |
| 575 | .PP |
| 576 | This warns you that \f(CW"fred@example.com"\fR is going to turn into |
| 577 | \&\f(CW\*(C`fred.com\*(C'\fR if you don't backslash the \f(CW\*(C`@\*(C'\fR. |
| 578 | See http://www.plover.com/~mjd/perl/at\-error.html for more details |
| 579 | about the history here. |
| 580 | .Sh "Miscellaneous Changes" |
| 581 | .IX Subsection "Miscellaneous Changes" |
| 582 | .IP "\(bu" 4 |
| 583 | \&\s-1AUTOLOAD\s0 is now lvaluable, meaning that you can add the :lvalue attribute |
| 584 | to \s-1AUTOLOAD\s0 subroutines and you can assign to the \s-1AUTOLOAD\s0 return value. |
| 585 | .IP "\(bu" 4 |
| 586 | The \f(CW$Config\fR{byteorder} (and corresponding \s-1BYTEORDER\s0 in config.h) was |
| 587 | previously wrong in platforms if sizeof(long) was 4, but sizeof(\s-1IV\s0) |
| 588 | was 8. The byteorder was only sizeof(long) bytes long (1234 or 4321), |
| 589 | but now it is correctly sizeof(\s-1IV\s0) bytes long, (12345678 or 87654321). |
| 590 | (This problem didn't affect Windows platforms.) |
| 591 | .Sp |
| 592 | Also, \f(CW$Config\fR{byteorder} is now computed dynamically\*(--this is more |
| 593 | robust with \*(L"fat binaries\*(R" where an executable image contains binaries |
| 594 | for more than one binary platform, and when cross\-compiling. |
| 595 | .IP "\(bu" 4 |
| 596 | \&\f(CW\*(C`perl \-d:Module=arg,arg,arg\*(C'\fR now works (previously one couldn't pass |
| 597 | in multiple arguments.) |
| 598 | .IP "\(bu" 4 |
| 599 | \&\f(CW\*(C`do\*(C'\fR followed by a bareword now ensures that this bareword isn't |
| 600 | a keyword (to avoid a bug where \f(CW\*(C`do q(foo.pl)\*(C'\fR tried to call a |
| 601 | subroutine called \f(CW\*(C`q\*(C'\fR). This means that for example instead of |
| 602 | \&\f(CW\*(C`do format()\*(C'\fR you must write \f(CW\*(C`do &format()\*(C'\fR. |
| 603 | .IP "\(bu" 4 |
| 604 | The builtin \fIdump()\fR now gives an optional warning |
| 605 | \&\f(CW\*(C`dump() better written as CORE::dump()\*(C'\fR, |
| 606 | meaning that by default \f(CW\*(C`dump(...)\*(C'\fR is resolved as the builtin |
| 607 | \&\fIdump()\fR which dumps core and aborts, not as (possibly) user-defined |
| 608 | \&\f(CW\*(C`sub dump\*(C'\fR. To call the latter, qualify the call as \f(CW\*(C`&dump(...)\*(C'\fR. |
| 609 | (The whole \fIdump()\fR feature is to considered deprecated, and possibly |
| 610 | removed/changed in future releases.) |
| 611 | .IP "\(bu" 4 |
| 612 | \&\fIchomp()\fR and \fIchop()\fR are now overridable. Note, however, that their |
| 613 | prototype (as given by \f(CW\*(C`prototype("CORE::chomp")\*(C'\fR is undefined, |
| 614 | because it cannot be expressed and therefore one cannot really write |
| 615 | replacements to override these builtins. |
| 616 | .IP "\(bu" 4 |
| 617 | \&\s-1END\s0 blocks are now run even if you exit/die in a \s-1BEGIN\s0 block. |
| 618 | Internally, the execution of \s-1END\s0 blocks is now controlled by |
| 619 | PL_exit_flags & \s-1PERL_EXIT_DESTRUCT_END\s0. This enables the new |
| 620 | behaviour for Perl embedders. This will default in 5.10. See |
| 621 | perlembed. |
| 622 | .IP "\(bu" 4 |
| 623 | Formats now support zero-padded decimal fields. |
| 624 | .IP "\(bu" 4 |
| 625 | Although \*(L"you shouldn't do that\*(R", it was possible to write code that |
| 626 | depends on Perl's hashed key order (Data::Dumper does this). The new |
| 627 | algorithm \*(L"One\-at\-a\-Time\*(R" produces a different hashed key order. |
| 628 | More details are in \*(L"Performance Enhancements\*(R". |
| 629 | .IP "\(bu" 4 |
| 630 | lstat(\s-1FILEHANDLE\s0) now gives a warning because the operation makes no sense. |
| 631 | In future releases this may become a fatal error. |
| 632 | .IP "\(bu" 4 |
| 633 | Spurious syntax errors generated in certain situations, when \fIglob()\fR |
| 634 | caused File::Glob to be loaded for the first time, have been fixed. [561] |
| 635 | .IP "\(bu" 4 |
| 636 | Lvalue subroutines can now return \f(CW\*(C`undef\*(C'\fR in list context. However, |
| 637 | the lvalue subroutine feature still remains experimental. [561+] |
| 638 | .IP "\(bu" 4 |
| 639 | A lost warning \*(L"Can't declare ... dereference in my\*(R" has been |
| 640 | restored (Perl had it earlier but it became lost in later releases.) |
| 641 | .IP "\(bu" 4 |
| 642 | A new special regular expression variable has been introduced: |
| 643 | \&\f(CW$^N\fR, which contains the most-recently closed group (submatch). |
| 644 | .IP "\(bu" 4 |
| 645 | \&\f(CW\*(C`no Module;\*(C'\fR does not produce an error even if Module does not have an |
| 646 | \&\fIunimport()\fR method. This parallels the behavior of \f(CW\*(C`use\*(C'\fR vis-a-vis |
| 647 | \&\f(CW\*(C`import\*(C'\fR. [561] |
| 648 | .IP "\(bu" 4 |
| 649 | The numerical comparison operators return \f(CW\*(C`undef\*(C'\fR if either operand |
| 650 | is a NaN. Previously the behaviour was unspecified. |
| 651 | .IP "\(bu" 4 |
| 652 | \&\f(CW\*(C`our\*(C'\fR can now have an experimental optional attribute \f(CW\*(C`unique\*(C'\fR that |
| 653 | affects how global variables are shared among multiple interpreters, |
| 654 | see \*(L"our\*(R" in perlfunc. |
| 655 | .IP "\(bu" 4 |
| 656 | The following builtin functions are now overridable: \fIeach()\fR, \fIkeys()\fR, |
| 657 | \&\fIpop()\fR, \fIpush()\fR, \fIshift()\fR, \fIsplice()\fR, \fIunshift()\fR. [561] |
| 658 | .IP "\(bu" 4 |
| 659 | \&\f(CW\*(C`pack() / unpack()\*(C'\fR can now group template letters with \f(CW\*(C`()\*(C'\fR and then |
| 660 | apply repetition/count modifiers on the groups. |
| 661 | .IP "\(bu" 4 |
| 662 | \&\f(CW\*(C`pack() / unpack()\*(C'\fR can now process the Perl internal numeric types: |
| 663 | IVs, UVs, NVs\*(-- and also long doubles, if supported by the platform. |
| 664 | The template letters are \f(CW\*(C`j\*(C'\fR, \f(CW\*(C`J\*(C'\fR, \f(CW\*(C`F\*(C'\fR, and \f(CW\*(C`D\*(C'\fR. |
| 665 | .IP "\(bu" 4 |
| 666 | \&\f(CW\*(C`pack('U0a*', ...)\*(C'\fR can now be used to force a string to \s-1UTF\-8\s0. |
| 667 | .IP "\(bu" 4 |
| 668 | my _\|_PACKAGE_\|_ \f(CW$obj\fR now works. [561] |
| 669 | .IP "\(bu" 4 |
| 670 | \&\fIPOSIX::sleep()\fR now returns the number of \fIunslept\fR seconds |
| 671 | (as the \s-1POSIX\s0 standard says), as opposed to \fICORE::sleep()\fR which |
| 672 | returns the number of slept seconds. |
| 673 | .IP "\(bu" 4 |
| 674 | \&\fIprintf()\fR and \fIsprintf()\fR now support parameter reordering using the |
| 675 | \&\f(CW\*(C`%\ed+\e$\*(C'\fR and \f(CW\*(C`*\ed+\e$\*(C'\fR syntaxes. For example |
| 676 | .Sp |
| 677 | .Vb 1 |
| 678 | \& printf "%2\e$s %1\e$s\en", "foo", "bar"; |
| 679 | .Ve |
| 680 | .Sp |
| 681 | will print \*(L"bar foo\en\*(R". This feature helps in writing |
| 682 | internationalised software, and in general when the order |
| 683 | of the parameters can vary. |
| 684 | .IP "\(bu" 4 |
| 685 | The (\e&) prototype now works properly. [561] |
| 686 | .IP "\(bu" 4 |
| 687 | prototype(\e[$@%&]) is now available to implicitly create references |
| 688 | (useful for example if you want to emulate the \fItie()\fR interface). |
| 689 | .IP "\(bu" 4 |
| 690 | A new command-line option, \f(CW\*(C`\-t\*(C'\fR is available. It is the |
| 691 | little brother of \f(CW\*(C`\-T\*(C'\fR: instead of dying on taint violations, |
| 692 | lexical warnings are given. \fBThis is only meant as a temporary |
| 693 | debugging aid while securing the code of old legacy applications. |
| 694 | This is not a substitute for \-T.\fR |
| 695 | .IP "\(bu" 4 |
| 696 | In other taint news, the \f(CW\*(C`exec LIST\*(C'\fR and \f(CW\*(C`system LIST\*(C'\fR have now been |
| 697 | considered too risky (think \f(CW\*(C`exec @ARGV\*(C'\fR: it can start any program |
| 698 | with any arguments), and now the said forms cause a warning under |
| 699 | lexical warnings. You should carefully launder the arguments to |
| 700 | guarantee their validity. In future releases of Perl the forms will |
| 701 | become fatal errors so consider starting laundering now. |
| 702 | .IP "\(bu" 4 |
| 703 | Tied hash interfaces are now required to have the \s-1EXISTS\s0 and \s-1DELETE\s0 |
| 704 | methods (either own or inherited). |
| 705 | .IP "\(bu" 4 |
| 706 | If tr/// is just counting characters, it doesn't attempt to |
| 707 | modify its target. |
| 708 | .IP "\(bu" 4 |
| 709 | \&\fIuntie()\fR will now call an \s-1\fIUNTIE\s0()\fR hook if it exists. See perltie |
| 710 | for details. [561] |
| 711 | .IP "\(bu" 4 |
| 712 | utime now supports \f(CW\*(C`utime undef, undef, @files\*(C'\fR to change the |
| 713 | file timestamps to the current time. |
| 714 | .IP "\(bu" 4 |
| 715 | The rules for allowing underscores (underbars) in numeric constants |
| 716 | have been relaxed and simplified: now you can have an underscore |
| 717 | simply \fBbetween digits\fR. |
| 718 | .IP "\(bu" 4 |
| 719 | Rather than relying on C's argv[0] (which may not contain a full pathname) |
| 720 | where possible $^X is now set by asking the operating system. |
| 721 | (eg by reading \fI/proc/self/exe\fR on Linux, \fI/proc/curproc/file\fR on FreeBSD) |
| 722 | .IP "\(bu" 4 |
| 723 | A new variable, \f(CW\*(C`${^TAINT}\*(C'\fR, indicates whether taint mode is enabled. |
| 724 | .IP "\(bu" 4 |
| 725 | You can now override the \fIreadline()\fR builtin, and this overrides also |
| 726 | the <\s-1FILEHANDLE\s0> angle bracket operator. |
| 727 | .IP "\(bu" 4 |
| 728 | The command-line options \-s and \-F are now recognized on the shebang |
| 729 | (#!) line. |
| 730 | .IP "\(bu" 4 |
| 731 | Use of the \f(CW\*(C`/c\*(C'\fR match modifier without an accompanying \f(CW\*(C`/g\*(C'\fR modifier |
| 732 | elicits a new warning: \f(CW\*(C`Use of /c modifier is meaningless without /g\*(C'\fR. |
| 733 | .Sp |
| 734 | Use of \f(CW\*(C`/c\*(C'\fR in substitutions, even with \f(CW\*(C`/g\*(C'\fR, elicits |
| 735 | \&\f(CW\*(C`Use of /c modifier is meaningless in s///\*(C'\fR. |
| 736 | .Sp |
| 737 | Use of \f(CW\*(C`/g\*(C'\fR with \f(CW\*(C`split\*(C'\fR elicits \f(CW\*(C`Use of /g modifier is meaningless |
| 738 | in split\*(C'\fR. |
| 739 | .IP "\(bu" 4 |
| 740 | Support for the \f(CW\*(C`CLONE\*(C'\fR special subroutine had been added. |
| 741 | With ithreads, when a new thread is created, all Perl data is cloned, |
| 742 | however non-Perl data cannot be cloned automatically. In \f(CW\*(C`CLONE\*(C'\fR you |
| 743 | can do whatever you need to do, like for example handle the cloning of |
| 744 | non-Perl data, if necessary. \f(CW\*(C`CLONE\*(C'\fR will be executed once for every |
| 745 | package that has it defined or inherited. It will be called in the |
| 746 | context of the new thread, so all modifications are made in the new area. |
| 747 | .Sp |
| 748 | See perlmod |
| 749 | .SH "Modules and Pragmata" |
| 750 | .IX Header "Modules and Pragmata" |
| 751 | .Sh "New Modules and Pragmata" |
| 752 | .IX Subsection "New Modules and Pragmata" |
| 753 | .IP "\(bu" 4 |
| 754 | \&\f(CW\*(C`Attribute::Handlers\*(C'\fR, originally by Damian Conway and now maintained |
| 755 | by Arthur Bergman, allows a class to define attribute handlers. |
| 756 | .Sp |
| 757 | .Vb 3 |
| 758 | \& package MyPack; |
| 759 | \& use Attribute::Handlers; |
| 760 | \& sub Wolf :ATTR(SCALAR) { print "howl!\en" } |
| 761 | .Ve |
| 762 | .Sp |
| 763 | .Vb 1 |
| 764 | \& # later, in some package using or inheriting from MyPack... |
| 765 | .Ve |
| 766 | .Sp |
| 767 | .Vb 1 |
| 768 | \& my MyPack $Fluffy : Wolf; # the attribute handler Wolf will be called |
| 769 | .Ve |
| 770 | .Sp |
| 771 | Both variables and routines can have attribute handlers. Handlers can |
| 772 | be specific to type (\s-1SCALAR\s0, \s-1ARRAY\s0, \s-1HASH\s0, or \s-1CODE\s0), or specific to the |
| 773 | exact compilation phase (\s-1BEGIN\s0, \s-1CHECK\s0, \s-1INIT\s0, or \s-1END\s0). |
| 774 | See Attribute::Handlers. |
| 775 | .IP "\(bu" 4 |
| 776 | \&\f(CW\*(C`B::Concise\*(C'\fR, by Stephen McCamant, is a new compiler backend for |
| 777 | walking the Perl syntax tree, printing concise info about ops. |
| 778 | The output is highly customisable. See B::Concise. [561+] |
| 779 | .IP "\(bu" 4 |
| 780 | The new bignum, bigint, and bigrat pragmas, by Tels, implement |
| 781 | transparent bignum support (using the Math::BigInt, Math::BigFloat, |
| 782 | and Math::BigRat backends). |
| 783 | .IP "\(bu" 4 |
| 784 | \&\f(CW\*(C`Class::ISA\*(C'\fR, by Sean Burke, is a module for reporting the search |
| 785 | path for a class's \s-1ISA\s0 tree. See Class::ISA. |
| 786 | .IP "\(bu" 4 |
| 787 | \&\f(CW\*(C`Cwd\*(C'\fR now has a split personality: if possible, an \s-1XS\s0 extension is |
| 788 | used, (this will hopefully be faster, more secure, and more robust) |
| 789 | but if not possible, the familiar Perl implementation is used. |
| 790 | .IP "\(bu" 4 |
| 791 | \&\f(CW\*(C`Devel::PPPort\*(C'\fR, originally by Kenneth Albanowski and now |
| 792 | maintained by Paul Marquess, has been added. It is primarily used |
| 793 | by \f(CW\*(C`h2xs\*(C'\fR to enhance portability of \s-1XS\s0 modules between different |
| 794 | versions of Perl. See Devel::PPPort. |
| 795 | .IP "\(bu" 4 |
| 796 | \&\f(CW\*(C`Digest\*(C'\fR, frontend module for calculating digests (checksums), from |
| 797 | Gisle Aas, has been added. See Digest. |
| 798 | .IP "\(bu" 4 |
| 799 | \&\f(CW\*(C`Digest::MD5\*(C'\fR for calculating \s-1MD5\s0 digests (checksums) as defined in |
| 800 | \&\s-1RFC\s0 1321, from Gisle Aas, has been added. See Digest::MD5. |
| 801 | .Sp |
| 802 | .Vb 1 |
| 803 | \& use Digest::MD5 'md5_hex'; |
| 804 | .Ve |
| 805 | .Sp |
| 806 | .Vb 1 |
| 807 | \& $digest = md5_hex("Thirsty Camel"); |
| 808 | .Ve |
| 809 | .Sp |
| 810 | .Vb 1 |
| 811 | \& print $digest, "\en"; # 01d19d9d2045e005c3f1b80e8b164de1 |
| 812 | .Ve |
| 813 | .Sp |
| 814 | \&\s-1NOTE:\s0 the \f(CW\*(C`MD5\*(C'\fR backward compatibility module is deliberately not |
| 815 | included since its further use is discouraged. |
| 816 | .Sp |
| 817 | See also PerlIO::via::QuotedPrint. |
| 818 | .IP "\(bu" 4 |
| 819 | \&\f(CW\*(C`Encode\*(C'\fR, originally by Nick Ing-Simmons and now maintained by Dan |
| 820 | Kogai, provides a mechanism to translate between different character |
| 821 | encodings. Support for Unicode, \s-1ISO\-8859\-1\s0, and \s-1ASCII\s0 are compiled in |
| 822 | to the module. Several other encodings (like the rest of the |
| 823 | \&\s-1ISO\-8859\s0, CP*/Win*, Mac, \s-1KOI8\-R\s0, three variants \s-1EBCDIC\s0, Chinese, |
| 824 | Japanese, and Korean encodings) are included and can be loaded at |
| 825 | runtime. (For space considerations, the largest Chinese encodings |
| 826 | have been separated into their own \s-1CPAN\s0 module, Encode::HanExtra, |
| 827 | which Encode will use if available). See Encode. |
| 828 | .Sp |
| 829 | Any encoding supported by Encode module is also available to the |
| 830 | \&\*(L":\fIencoding()\fR\*(R" layer if PerlIO is used. |
| 831 | .IP "\(bu" 4 |
| 832 | \&\f(CW\*(C`Hash::Util\*(C'\fR is the interface to the new \fIrestricted hashes\fR |
| 833 | feature. (Implemented by Jeffrey Friedl, Nick Ing\-Simmons, and |
| 834 | Michael Schwern.) See Hash::Util. |
| 835 | .IP "\(bu" 4 |
| 836 | \&\f(CW\*(C`I18N::Langinfo\*(C'\fR can be used to query locale information. |
| 837 | See I18N::Langinfo. |
| 838 | .IP "\(bu" 4 |
| 839 | \&\f(CW\*(C`I18N::LangTags\*(C'\fR, by Sean Burke, has functions for dealing with |
| 840 | RFC3066\-style language tags. See I18N::LangTags. |
| 841 | .IP "\(bu" 4 |
| 842 | \&\f(CW\*(C`ExtUtils::Constant\*(C'\fR, by Nicholas Clark, is a new tool for extension |
| 843 | writers for generating \s-1XS\s0 code to import C header constants. |
| 844 | See ExtUtils::Constant. |
| 845 | .IP "\(bu" 4 |
| 846 | \&\f(CW\*(C`Filter::Simple\*(C'\fR, by Damian Conway, is an easy-to-use frontend to |
| 847 | Filter::Util::Call. See Filter::Simple. |
| 848 | .Sp |
| 849 | .Vb 1 |
| 850 | \& # in MyFilter.pm: |
| 851 | .Ve |
| 852 | .Sp |
| 853 | .Vb 1 |
| 854 | \& package MyFilter; |
| 855 | .Ve |
| 856 | .Sp |
| 857 | .Vb 5 |
| 858 | \& use Filter::Simple sub { |
| 859 | \& while (my ($from, $to) = splice @_, 0, 2) { |
| 860 | \& s/$from/$to/g; |
| 861 | \& } |
| 862 | \& }; |
| 863 | .Ve |
| 864 | .Sp |
| 865 | .Vb 1 |
| 866 | \& 1; |
| 867 | .Ve |
| 868 | .Sp |
| 869 | .Vb 1 |
| 870 | \& # in user's code: |
| 871 | .Ve |
| 872 | .Sp |
| 873 | .Vb 1 |
| 874 | \& use MyFilter qr/red/ => 'green'; |
| 875 | .Ve |
| 876 | .Sp |
| 877 | .Vb 2 |
| 878 | \& print "red\en"; # this code is filtered, will print "green\en" |
| 879 | \& print "bored\en"; # this code is filtered, will print "bogreen\en" |
| 880 | .Ve |
| 881 | .Sp |
| 882 | .Vb 1 |
| 883 | \& no MyFilter; |
| 884 | .Ve |
| 885 | .Sp |
| 886 | .Vb 1 |
| 887 | \& print "red\en"; # this code is not filtered, will print "red\en" |
| 888 | .Ve |
| 889 | .IP "\(bu" 4 |
| 890 | \&\f(CW\*(C`File::Temp\*(C'\fR, by Tim Jenness, allows one to create temporary files |
| 891 | and directories in an easy, portable, and secure way. See File::Temp. |
| 892 | [561+] |
| 893 | .IP "\(bu" 4 |
| 894 | \&\f(CW\*(C`Filter::Util::Call\*(C'\fR, by Paul Marquess, provides you with the |
| 895 | framework to write \fIsource filters\fR in Perl. For most uses, the |
| 896 | frontend Filter::Simple is to be preferred. See Filter::Util::Call. |
| 897 | .IP "\(bu" 4 |
| 898 | \&\f(CW\*(C`if\*(C'\fR, by Ilya Zakharevich, is a new pragma for conditional inclusion |
| 899 | of modules. |
| 900 | .IP "\(bu" 4 |
| 901 | libnet, by Graham Barr, is a collection of perl5 modules related |
| 902 | to network programming. See Net::FTP, Net::NNTP, Net::Ping |
| 903 | (not part of libnet, but related), Net::POP3, Net::SMTP, |
| 904 | and Net::Time. |
| 905 | .Sp |
| 906 | Perl installation leaves libnet unconfigured; use \fIlibnetcfg\fR |
| 907 | to configure it. |
| 908 | .IP "\(bu" 4 |
| 909 | \&\f(CW\*(C`List::Util\*(C'\fR, by Graham Barr, is a selection of general-utility |
| 910 | list subroutines, such as \fIsum()\fR, \fImin()\fR, \fIfirst()\fR, and \fIshuffle()\fR. |
| 911 | See List::Util. |
| 912 | .IP "\(bu" 4 |
| 913 | \&\f(CW\*(C`Locale::Constants\*(C'\fR, \f(CW\*(C`Locale::Country\*(C'\fR, \f(CW\*(C`Locale::Currency\*(C'\fR |
| 914 | \&\f(CW\*(C`Locale::Language\*(C'\fR, and Locale::Script, by Neil Bowers, have |
| 915 | been added. They provide the codes for various locale standards, such |
| 916 | as \*(L"fr\*(R" for France, \*(L"usd\*(R" for \s-1US\s0 Dollar, and \*(L"ja\*(R" for Japanese. |
| 917 | .Sp |
| 918 | .Vb 1 |
| 919 | \& use Locale::Country; |
| 920 | .Ve |
| 921 | .Sp |
| 922 | .Vb 2 |
| 923 | \& $country = code2country('jp'); # $country gets 'Japan' |
| 924 | \& $code = country2code('Norway'); # $code gets 'no' |
| 925 | .Ve |
| 926 | .Sp |
| 927 | See Locale::Constants, Locale::Country, Locale::Currency, |
| 928 | and Locale::Language. |
| 929 | .IP "\(bu" 4 |
| 930 | \&\f(CW\*(C`Locale::Maketext\*(C'\fR, by Sean Burke, is a localization framework. See |
| 931 | Locale::Maketext, and Locale::Maketext::TPJ13. The latter is an |
| 932 | article about software localization, originally published in The Perl |
| 933 | Journal #13, and republished here with kind permission. |
| 934 | .IP "\(bu" 4 |
| 935 | \&\f(CW\*(C`Math::BigRat\*(C'\fR for big rational numbers, to accompany Math::BigInt and |
| 936 | Math::BigFloat, from Tels. See Math::BigRat. |
| 937 | .IP "\(bu" 4 |
| 938 | \&\f(CW\*(C`Memoize\*(C'\fR can make your functions faster by trading space for time, |
| 939 | from Mark-Jason Dominus. See Memoize. |
| 940 | .IP "\(bu" 4 |
| 941 | \&\f(CW\*(C`MIME::Base64\*(C'\fR, by Gisle Aas, allows you to encode data in base64, |
| 942 | as defined in \s-1RFC\s0 2045 \- \fI\s-1MIME\s0 (Multipurpose Internet Mail |
| 943 | Extensions)\fR. |
| 944 | .Sp |
| 945 | .Vb 1 |
| 946 | \& use MIME::Base64; |
| 947 | .Ve |
| 948 | .Sp |
| 949 | .Vb 2 |
| 950 | \& $encoded = encode_base64('Aladdin:open sesame'); |
| 951 | \& $decoded = decode_base64($encoded); |
| 952 | .Ve |
| 953 | .Sp |
| 954 | .Vb 1 |
| 955 | \& print $encoded, "\en"; # "QWxhZGRpbjpvcGVuIHNlc2FtZQ==" |
| 956 | .Ve |
| 957 | .Sp |
| 958 | See MIME::Base64. |
| 959 | .IP "\(bu" 4 |
| 960 | \&\f(CW\*(C`MIME::QuotedPrint\*(C'\fR, by Gisle Aas, allows you to encode data |
| 961 | in quoted-printable encoding, as defined in \s-1RFC\s0 2045 \- \fI\s-1MIME\s0 |
| 962 | (Multipurpose Internet Mail Extensions)\fR. |
| 963 | .Sp |
| 964 | .Vb 1 |
| 965 | \& use MIME::QuotedPrint; |
| 966 | .Ve |
| 967 | .Sp |
| 968 | .Vb 2 |
| 969 | \& $encoded = encode_qp("\exDE\exAD\exBE\exEF"); |
| 970 | \& $decoded = decode_qp($encoded); |
| 971 | .Ve |
| 972 | .Sp |
| 973 | .Vb 2 |
| 974 | \& print $encoded, "\en"; # "=DE=AD=BE=EF\en" |
| 975 | \& print $decoded, "\en"; # "\exDE\exAD\exBE\exEF\en" |
| 976 | .Ve |
| 977 | .Sp |
| 978 | See also PerlIO::via::QuotedPrint. |
| 979 | .IP "\(bu" 4 |
| 980 | \&\f(CW\*(C`NEXT\*(C'\fR, by Damian Conway, is a pseudo-class for method redispatch. |
| 981 | See \s-1NEXT\s0. |
| 982 | .IP "\(bu" 4 |
| 983 | \&\f(CW\*(C`open\*(C'\fR is a new pragma for setting the default I/O layers |
| 984 | for \fIopen()\fR. |
| 985 | .IP "\(bu" 4 |
| 986 | \&\f(CW\*(C`PerlIO::scalar\*(C'\fR, by Nick Ing\-Simmons, provides the implementation |
| 987 | of \s-1IO\s0 to \*(L"in memory\*(R" Perl scalars as discussed above. It also serves |
| 988 | as an example of a loadable PerlIO layer. Other future possibilities |
| 989 | include PerlIO::Array and PerlIO::Code. See PerlIO::scalar. |
| 990 | .IP "\(bu" 4 |
| 991 | \&\f(CW\*(C`PerlIO::via\*(C'\fR, by Nick Ing\-Simmons, acts as a PerlIO layer and wraps |
| 992 | PerlIO layer functionality provided by a class (typically implemented |
| 993 | in Perl code). |
| 994 | .IP "\(bu" 4 |
| 995 | \&\f(CW\*(C`PerlIO::via::QuotedPrint\*(C'\fR, by Elizabeth Mattijsen, is an example |
| 996 | of a \f(CW\*(C`PerlIO::via\*(C'\fR class: |
| 997 | .Sp |
| 998 | .Vb 2 |
| 999 | \& use PerlIO::via::QuotedPrint; |
| 1000 | \& open($fh,">:via(QuotedPrint)",$path); |
| 1001 | .Ve |
| 1002 | .Sp |
| 1003 | This will automatically convert everything output to \f(CW$fh\fR to |
| 1004 | Quoted\-Printable. See PerlIO::via and PerlIO::via::QuotedPrint. |
| 1005 | .IP "\(bu" 4 |
| 1006 | \&\f(CW\*(C`Pod::ParseLink\*(C'\fR, by Russ Allbery, has been added, |
| 1007 | to parse L\&<> links in pods as described in the new |
| 1008 | perlpodspec. |
| 1009 | .IP "\(bu" 4 |
| 1010 | \&\f(CW\*(C`Pod::Text::Overstrike\*(C'\fR, by Joe Smith, has been added. |
| 1011 | It converts \s-1POD\s0 data to formatted overstrike text. |
| 1012 | See Pod::Text::Overstrike. [561+] |
| 1013 | .IP "\(bu" 4 |
| 1014 | \&\f(CW\*(C`Scalar::Util\*(C'\fR is a selection of general-utility scalar subroutines, |
| 1015 | such as \fIblessed()\fR, \fIreftype()\fR, and \fItainted()\fR. See Scalar::Util. |
| 1016 | .IP "\(bu" 4 |
| 1017 | \&\f(CW\*(C`sort\*(C'\fR is a new pragma for controlling the behaviour of \fIsort()\fR. |
| 1018 | .IP "\(bu" 4 |
| 1019 | \&\f(CW\*(C`Storable\*(C'\fR gives persistence to Perl data structures by allowing the |
| 1020 | storage and retrieval of Perl data to and from files in a fast and |
| 1021 | compact binary format. Because in effect Storable does serialisation |
| 1022 | of Perl data structures, with it you can also clone deep, hierarchical |
| 1023 | datastructures. Storable was originally created by Raphael Manfredi, |
| 1024 | but it is now maintained by Abhijit Menon\-Sen. Storable has been |
| 1025 | enhanced to understand the two new hash features, Unicode keys and |
| 1026 | restricted hashes. See Storable. |
| 1027 | .IP "\(bu" 4 |
| 1028 | \&\f(CW\*(C`Switch\*(C'\fR, by Damian Conway, has been added. Just by saying |
| 1029 | .Sp |
| 1030 | .Vb 1 |
| 1031 | \& use Switch; |
| 1032 | .Ve |
| 1033 | .Sp |
| 1034 | you have \f(CW\*(C`switch\*(C'\fR and \f(CW\*(C`case\*(C'\fR available in Perl. |
| 1035 | .Sp |
| 1036 | .Vb 1 |
| 1037 | \& use Switch; |
| 1038 | .Ve |
| 1039 | .Sp |
| 1040 | .Vb 1 |
| 1041 | \& switch ($val) { |
| 1042 | .Ve |
| 1043 | .Sp |
| 1044 | .Vb 11 |
| 1045 | \& case 1 { print "number 1" } |
| 1046 | \& case "a" { print "string a" } |
| 1047 | \& case [1..10,42] { print "number in list" } |
| 1048 | \& case (@array) { print "number in list" } |
| 1049 | \& case /\ew+/ { print "pattern" } |
| 1050 | \& case qr/\ew+/ { print "pattern" } |
| 1051 | \& case (%hash) { print "entry in hash" } |
| 1052 | \& case (\e%hash) { print "entry in hash" } |
| 1053 | \& case (\e&sub) { print "arg to subroutine" } |
| 1054 | \& else { print "previous case not true" } |
| 1055 | \& } |
| 1056 | .Ve |
| 1057 | .Sp |
| 1058 | See Switch. |
| 1059 | .IP "\(bu" 4 |
| 1060 | \&\f(CW\*(C`Test::More\*(C'\fR, by Michael Schwern, is yet another framework for writing |
| 1061 | test scripts, more extensive than Test::Simple. See Test::More. |
| 1062 | .IP "\(bu" 4 |
| 1063 | \&\f(CW\*(C`Test::Simple\*(C'\fR, by Michael Schwern, has basic utilities for writing |
| 1064 | tests. See Test::Simple. |
| 1065 | .IP "\(bu" 4 |
| 1066 | \&\f(CW\*(C`Text::Balanced\*(C'\fR, by Damian Conway, has been added, for extracting |
| 1067 | delimited text sequences from strings. |
| 1068 | .Sp |
| 1069 | .Vb 1 |
| 1070 | \& use Text::Balanced 'extract_delimited'; |
| 1071 | .Ve |
| 1072 | .Sp |
| 1073 | .Vb 1 |
| 1074 | \& ($a, $b) = extract_delimited("'never say never', he never said", "'", ''); |
| 1075 | .Ve |
| 1076 | .Sp |
| 1077 | $a will be \*(L"'never say never'\*(R", \f(CW$b\fR will be ', he never said'. |
| 1078 | .Sp |
| 1079 | In addition to \fIextract_delimited()\fR, there are also \fIextract_bracketed()\fR, |
| 1080 | \&\fIextract_quotelike()\fR, \fIextract_codeblock()\fR, \fIextract_variable()\fR, |
| 1081 | \&\fIextract_tagged()\fR, \fIextract_multiple()\fR, \fIgen_delimited_pat()\fR, and |
| 1082 | \&\fIgen_extract_tagged()\fR. With these, you can implement rather advanced |
| 1083 | parsing algorithms. See Text::Balanced. |
| 1084 | .IP "\(bu" 4 |
| 1085 | \&\f(CW\*(C`threads\*(C'\fR, by Arthur Bergman, is an interface to interpreter threads. |
| 1086 | Interpreter threads (ithreads) is the new thread model introduced in |
| 1087 | Perl 5.6 but only available as an internal interface for extension |
| 1088 | writers (and for Win32 Perl for \f(CW\*(C`fork()\*(C'\fR emulation). See threads, |
| 1089 | threads::shared, and perlthrtut. |
| 1090 | .IP "\(bu" 4 |
| 1091 | \&\f(CW\*(C`threads::shared\*(C'\fR, by Arthur Bergman, allows data sharing for |
| 1092 | interpreter threads. See threads::shared. |
| 1093 | .IP "\(bu" 4 |
| 1094 | \&\f(CW\*(C`Tie::File\*(C'\fR, by Mark-Jason Dominus, associates a Perl array with the |
| 1095 | lines of a file. See Tie::File. |
| 1096 | .IP "\(bu" 4 |
| 1097 | \&\f(CW\*(C`Tie::Memoize\*(C'\fR, by Ilya Zakharevich, provides on-demand loaded hashes. |
| 1098 | See Tie::Memoize. |
| 1099 | .IP "\(bu" 4 |
| 1100 | \&\f(CW\*(C`Tie::RefHash::Nestable\*(C'\fR, by Edward Avis, allows storing hash |
| 1101 | references (unlike the standard Tie::RefHash) The module is contained |
| 1102 | within Tie::RefHash. See Tie::RefHash. |
| 1103 | .IP "\(bu" 4 |
| 1104 | \&\f(CW\*(C`Time::HiRes\*(C'\fR, by Douglas E. Wegscheid, provides high resolution |
| 1105 | timing (ualarm, usleep, and gettimeofday). See Time::HiRes. |
| 1106 | .IP "\(bu" 4 |
| 1107 | \&\f(CW\*(C`Unicode::UCD\*(C'\fR offers a querying interface to the Unicode Character |
| 1108 | Database. See Unicode::UCD. |
| 1109 | .IP "\(bu" 4 |
| 1110 | \&\f(CW\*(C`Unicode::Collate\*(C'\fR, by \s-1SADAHIRO\s0 Tomoyuki, implements the \s-1UCA\s0 |
| 1111 | (Unicode Collation Algorithm) for sorting Unicode strings. |
| 1112 | See Unicode::Collate. |
| 1113 | .IP "\(bu" 4 |
| 1114 | \&\f(CW\*(C`Unicode::Normalize\*(C'\fR, by \s-1SADAHIRO\s0 Tomoyuki, implements the various |
| 1115 | Unicode normalization forms. See Unicode::Normalize. |
| 1116 | .IP "\(bu" 4 |
| 1117 | \&\f(CW\*(C`XS::APItest\*(C'\fR, by Tim Jenness, is a test extension that exercises \s-1XS\s0 |
| 1118 | APIs. Currently only \f(CW\*(C`printf()\*(C'\fR is tested: how to output various |
| 1119 | basic data types from \s-1XS\s0. |
| 1120 | .IP "\(bu" 4 |
| 1121 | \&\f(CW\*(C`XS::Typemap\*(C'\fR, by Tim Jenness, is a test extension that exercises |
| 1122 | \&\s-1XS\s0 typemaps. Nothing gets installed, but the code is worth studying |
| 1123 | for extension writers. |
| 1124 | .Sh "Updated And Improved Modules and Pragmata" |
| 1125 | .IX Subsection "Updated And Improved Modules and Pragmata" |
| 1126 | .IP "\(bu" 4 |
| 1127 | The following independently supported modules have been updated to the |
| 1128 | newest versions from \s-1CPAN:\s0 \s-1CGI\s0, \s-1CPAN\s0, DB_File, File::Spec, File::Temp, |
| 1129 | Getopt::Long, Math::BigFloat, Math::BigInt, the podlators bundle |
| 1130 | (Pod::Man, Pod::Text), Pod::LaTeX [561+], Pod::Parser, Storable, |
| 1131 | Term::ANSIColor, Test, Text\-Tabs+Wrap. |
| 1132 | .IP "\(bu" 4 |
| 1133 | \&\fIattributes::reftype()\fR now works on tied arguments. |
| 1134 | .IP "\(bu" 4 |
| 1135 | AutoLoader can now be disabled with \f(CW\*(C`no AutoLoader;\*(C'\fR. |
| 1136 | .IP "\(bu" 4 |
| 1137 | B::Deparse has been significantly enhanced by Robin Houston. It can |
| 1138 | now deparse almost all of the standard test suite (so that the tests |
| 1139 | still succeed). There is a make target \*(L"test.deparse\*(R" for trying this |
| 1140 | out. |
| 1141 | .IP "\(bu" 4 |
| 1142 | Carp now has better interface documentation, and the \f(CW@CARP_NOT\fR |
| 1143 | interface has been added to get optional control over where errors |
| 1144 | are reported independently of \f(CW@ISA\fR, by Ben Tilly. |
| 1145 | .IP "\(bu" 4 |
| 1146 | Class::Struct can now define the classes in compile time. |
| 1147 | .IP "\(bu" 4 |
| 1148 | Class::Struct now assigns the array/hash element if the accessor |
| 1149 | is called with an array/hash element as the \fBsole\fR argument. |
| 1150 | .IP "\(bu" 4 |
| 1151 | The return value of \fICwd::fastcwd()\fR is now tainted. |
| 1152 | .IP "\(bu" 4 |
| 1153 | Data::Dumper now has an option to sort hashes. |
| 1154 | .IP "\(bu" 4 |
| 1155 | Data::Dumper now has an option to dump code references |
| 1156 | using B::Deparse. |
| 1157 | .IP "\(bu" 4 |
| 1158 | DB_File now supports newer Berkeley \s-1DB\s0 versions, among |
| 1159 | other improvements. |
| 1160 | .IP "\(bu" 4 |
| 1161 | Devel::Peek now has an interface for the Perl memory statistics |
| 1162 | (this works only if you are using perl's malloc, and if you have |
| 1163 | compiled with debugging). |
| 1164 | .IP "\(bu" 4 |
| 1165 | The English module can now be used without the infamous performance |
| 1166 | hit by saying |
| 1167 | .Sp |
| 1168 | .Vb 1 |
| 1169 | \& use English '-no_match_vars'; |
| 1170 | .Ve |
| 1171 | .Sp |
| 1172 | (Assuming, of course, that you don't need the troublesome variables |
| 1173 | \&\f(CW$`\fR, \f(CW$&\fR, or \f(CW$'\fR.) Also, introduced \f(CW@LAST_MATCH_START\fR and |
| 1174 | \&\f(CW@LAST_MATCH_END\fR English aliases for \f(CW\*(C`@\-\*(C'\fR and \f(CW\*(C`@+\*(C'\fR. |
| 1175 | .IP "\(bu" 4 |
| 1176 | ExtUtils::MakeMaker has been significantly cleaned up and fixed. |
| 1177 | The enhanced version has also been backported to earlier releases |
| 1178 | of Perl and submitted to \s-1CPAN\s0 so that the earlier releases can |
| 1179 | enjoy the fixes. |
| 1180 | .IP "\(bu" 4 |
| 1181 | The arguments of \fIWriteMakefile()\fR in Makefile.PL are now checked |
| 1182 | for sanity much more carefully than before. This may cause new |
| 1183 | warnings when modules are being installed. See ExtUtils::MakeMaker |
| 1184 | for more details. |
| 1185 | .IP "\(bu" 4 |
| 1186 | ExtUtils::MakeMaker now uses File::Spec internally, which hopefully |
| 1187 | leads to better portability. |
| 1188 | .IP "\(bu" 4 |
| 1189 | Fcntl, Socket, and Sys::Syslog have been rewritten by Nicholas Clark |
| 1190 | to use the new-style constant dispatch section (see ExtUtils::Constant). |
| 1191 | This means that they will be more robust and hopefully faster. |
| 1192 | .IP "\(bu" 4 |
| 1193 | File::Find now \fIchdir()\fRs correctly when chasing symbolic links. [561] |
| 1194 | .IP "\(bu" 4 |
| 1195 | File::Find now has pre\- and post-processing callbacks. It also |
| 1196 | correctly changes directories when chasing symbolic links. Callbacks |
| 1197 | (naughtily) exiting with \*(L"next;\*(R" instead of \*(L"return;\*(R" now work. |
| 1198 | .IP "\(bu" 4 |
| 1199 | File::Find is now (again) reentrant. It also has been made |
| 1200 | more portable. |
| 1201 | .IP "\(bu" 4 |
| 1202 | The warnings issued by File::Find now belong to their own category. |
| 1203 | You can enable/disable them with \f(CW\*(C`use/no warnings 'File::Find';\*(C'\fR. |
| 1204 | .IP "\(bu" 4 |
| 1205 | \&\fIFile::Glob::glob()\fR has been renamed to \fIFile::Glob::bsd_glob()\fR |
| 1206 | because the name clashes with the builtin \fIglob()\fR. The older |
| 1207 | name is still available for compatibility, but is deprecated. [561] |
| 1208 | .IP "\(bu" 4 |
| 1209 | File::Glob now supports \f(CW\*(C`GLOB_LIMIT\*(C'\fR constant to limit the size of |
| 1210 | the returned list of filenames. |
| 1211 | .IP "\(bu" 4 |
| 1212 | IPC::Open3 now allows the use of numeric file descriptors. |
| 1213 | .IP "\(bu" 4 |
| 1214 | IO::Socket now has an \fIatmark()\fR method, which returns true if the socket |
| 1215 | is positioned at the out-of-band mark. The method is also exportable |
| 1216 | as a \fIsockatmark()\fR function. |
| 1217 | .IP "\(bu" 4 |
| 1218 | IO::Socket::INET failed to open the specified port if the service name |
| 1219 | was not known. It now correctly uses the supplied port number as is. [561] |
| 1220 | .IP "\(bu" 4 |
| 1221 | IO::Socket::INET has support for the ReusePort option (if your |
| 1222 | platform supports it). The Reuse option now has an alias, ReuseAddr. |
| 1223 | For clarity, you may want to prefer ReuseAddr. |
| 1224 | .IP "\(bu" 4 |
| 1225 | IO::Socket::INET now supports a value of zero for \f(CW\*(C`LocalPort\*(C'\fR |
| 1226 | (usually meaning that the operating system will make one up.) |
| 1227 | .IP "\(bu" 4 |
| 1228 | \&'use lib' now works identically to \f(CW@INC\fR. Removing directories |
| 1229 | with 'no lib' now works. |
| 1230 | .IP "\(bu" 4 |
| 1231 | Math::BigFloat and Math::BigInt have undergone a full rewrite by Tels. |
| 1232 | They are now magnitudes faster, and they support various bignum |
| 1233 | libraries such as \s-1GMP\s0 and \s-1PARI\s0 as their backends. |
| 1234 | .IP "\(bu" 4 |
| 1235 | Math::Complex handles inf, NaN etc., better. |
| 1236 | .IP "\(bu" 4 |
| 1237 | Net::Ping has been considerably enhanced by Rob Brown: multihoming is |
| 1238 | now supported, Win32 functionality is better, there is now time |
| 1239 | measuring functionality (optionally high-resolution using |
| 1240 | Time::HiRes), and there is now \*(L"external\*(R" protocol which uses |
| 1241 | Net::Ping::External module which runs your external ping utility and |
| 1242 | parses the output. A version of Net::Ping::External is available in |
| 1243 | \&\s-1CPAN\s0. |
| 1244 | .Sp |
| 1245 | Note that some of the Net::Ping tests are disabled when running |
| 1246 | under the Perl distribution since one cannot assume one or more |
| 1247 | of the following: enabled echo port at localhost, full Internet |
| 1248 | connectivity, or sympathetic firewalls. You can set the environment |
| 1249 | variable PERL_TEST_Net_Ping to \*(L"1\*(R" (one) before running the Perl test |
| 1250 | suite to enable all the Net::Ping tests. |
| 1251 | .IP "\(bu" 4 |
| 1252 | \&\fIPOSIX::sigaction()\fR is now much more flexible and robust. |
| 1253 | You can now install coderef handlers, '\s-1DEFAULT\s0', and '\s-1IGNORE\s0' |
| 1254 | handlers, installing new handlers was not atomic. |
| 1255 | .IP "\(bu" 4 |
| 1256 | In Safe, \f(CW%INC\fR is now localised in a Safe compartment so that |
| 1257 | use/require work. |
| 1258 | .IP "\(bu" 4 |
| 1259 | In SDBM_File on dosish platforms, some keys went missing because of |
| 1260 | lack of support for files with \*(L"holes\*(R". A workaround for the problem |
| 1261 | has been added. |
| 1262 | .IP "\(bu" 4 |
| 1263 | In Search::Dict one can now have a pre-processing hook for the |
| 1264 | lines being searched. |
| 1265 | .IP "\(bu" 4 |
| 1266 | The Shell module now has an \s-1OO\s0 interface. |
| 1267 | .IP "\(bu" 4 |
| 1268 | In Sys::Syslog there is now a failover mechanism that will go |
| 1269 | through alternative connection mechanisms until the message |
| 1270 | is successfully logged. |
| 1271 | .IP "\(bu" 4 |
| 1272 | The Test module has been significantly enhanced. |
| 1273 | .IP "\(bu" 4 |
| 1274 | \&\fITime::Local::timelocal()\fR does not handle fractional seconds anymore. |
| 1275 | The rationale is that neither does \fIlocaltime()\fR, and \fItimelocal()\fR and |
| 1276 | \&\fIlocaltime()\fR are supposed to be inverses of each other. |
| 1277 | .IP "\(bu" 4 |
| 1278 | The vars pragma now supports declaring fully qualified variables. |
| 1279 | (Something that \f(CW\*(C`our()\*(C'\fR does not and will not support.) |
| 1280 | .IP "\(bu" 4 |
| 1281 | The \f(CW\*(C`utf8::\*(C'\fR name space (as in the pragma) provides various |
| 1282 | Perl-callable functions to provide low level access to Perl's |
| 1283 | internal Unicode representation. At the moment only \fIlength()\fR |
| 1284 | has been implemented. |
| 1285 | .SH "Utility Changes" |
| 1286 | .IX Header "Utility Changes" |
| 1287 | .IP "\(bu" 4 |
| 1288 | Emacs perl mode (emacs/cperl\-mode.el) has been updated to version |
| 1289 | 4.31. |
| 1290 | .IP "\(bu" 4 |
| 1291 | \&\fIemacs/e2ctags.pl\fR is now much faster. |
| 1292 | .IP "\(bu" 4 |
| 1293 | \&\f(CW\*(C`enc2xs\*(C'\fR is a tool for people adding their own encodings to the |
| 1294 | Encode module. |
| 1295 | .IP "\(bu" 4 |
| 1296 | \&\f(CW\*(C`h2ph\*(C'\fR now supports C trigraphs. |
| 1297 | .IP "\(bu" 4 |
| 1298 | \&\f(CW\*(C`h2xs\*(C'\fR now produces a template \s-1README\s0. |
| 1299 | .IP "\(bu" 4 |
| 1300 | \&\f(CW\*(C`h2xs\*(C'\fR now uses \f(CW\*(C`Devel::PPPort\*(C'\fR for better portability between |
| 1301 | different versions of Perl. |
| 1302 | .IP "\(bu" 4 |
| 1303 | \&\f(CW\*(C`h2xs\*(C'\fR uses the new ExtUtils::Constant module |
| 1304 | which will affect newly created extensions that define constants. |
| 1305 | Since the new code is more correct (if you have two constants where the |
| 1306 | first one is a prefix of the second one, the first constant \fBnever\fR |
| 1307 | got defined), less lossy (it uses integers for integer constant, |
| 1308 | as opposed to the old code that used floating point numbers even for |
| 1309 | integer constants), and slightly faster, you might want to consider |
| 1310 | regenerating your extension code (the new scheme makes regenerating |
| 1311 | easy). h2xs now also supports C trigraphs. |
| 1312 | .IP "\(bu" 4 |
| 1313 | \&\f(CW\*(C`libnetcfg\*(C'\fR has been added to configure libnet. |
| 1314 | .IP "\(bu" 4 |
| 1315 | \&\f(CW\*(C`perlbug\*(C'\fR is now much more robust. It also sends the bug report to |
| 1316 | perl.org, not perl.com. |
| 1317 | .IP "\(bu" 4 |
| 1318 | \&\f(CW\*(C`perlcc\*(C'\fR has been rewritten and its user interface (that is, |
| 1319 | command line) is much more like that of the \s-1UNIX\s0 C compiler, cc. |
| 1320 | (The perlbc tools has been removed. Use \f(CW\*(C`perlcc \-B\*(C'\fR instead.) |
| 1321 | \&\fBNote that perlcc is still considered very experimental and |
| 1322 | unsupported.\fR [561] |
| 1323 | .IP "\(bu" 4 |
| 1324 | \&\f(CW\*(C`perlivp\*(C'\fR is a new Installation Verification Procedure utility |
| 1325 | for running any time after installing Perl. |
| 1326 | .IP "\(bu" 4 |
| 1327 | \&\f(CW\*(C`piconv\*(C'\fR is an implementation of the character conversion utility |
| 1328 | \&\f(CW\*(C`iconv\*(C'\fR, demonstrating the new Encode module. |
| 1329 | .IP "\(bu" 4 |
| 1330 | \&\f(CW\*(C`pod2html\*(C'\fR now allows specifying a cache directory. |
| 1331 | .IP "\(bu" 4 |
| 1332 | \&\f(CW\*(C`pod2html\*(C'\fR now produces \s-1XHTML\s0 1.0. |
| 1333 | .IP "\(bu" 4 |
| 1334 | \&\f(CW\*(C`pod2html\*(C'\fR now understands \s-1POD\s0 written using different line endings |
| 1335 | (PC\-like \s-1CRLF\s0 versus UNIX-like \s-1LF\s0 versus MacClassic-like \s-1CR\s0). |
| 1336 | .IP "\(bu" 4 |
| 1337 | \&\f(CW\*(C`s2p\*(C'\fR has been completely rewritten in Perl. (It is in fact a full |
| 1338 | implementation of sed in Perl: you can use the sed functionality by |
| 1339 | using the \f(CW\*(C`psed\*(C'\fR utility.) |
| 1340 | .IP "\(bu" 4 |
| 1341 | \&\f(CW\*(C`xsubpp\*(C'\fR now understands \s-1POD\s0 documentation embedded in the *.xs |
| 1342 | files. [561] |
| 1343 | .IP "\(bu" 4 |
| 1344 | \&\f(CW\*(C`xsubpp\*(C'\fR now supports the \s-1OUT\s0 keyword. |
| 1345 | .SH "New Documentation" |
| 1346 | .IX Header "New Documentation" |
| 1347 | .IP "\(bu" 4 |
| 1348 | perl56delta details the changes between the 5.005 release and the |
| 1349 | 5.6.0 release. |
| 1350 | .IP "\(bu" 4 |
| 1351 | perlclib documents the internal replacements for standard C library |
| 1352 | functions. (Interesting only for extension writers and Perl core |
| 1353 | hackers.) [561+] |
| 1354 | .IP "\(bu" 4 |
| 1355 | perldebtut is a Perl debugging tutorial. [561+] |
| 1356 | .IP "\(bu" 4 |
| 1357 | perlebcdic contains considerations for running Perl on \s-1EBCDIC\s0 |
| 1358 | platforms. [561+] |
| 1359 | .IP "\(bu" 4 |
| 1360 | perlintro is a gentle introduction to Perl. |
| 1361 | .IP "\(bu" 4 |
| 1362 | perliol documents the internals of PerlIO with layers. |
| 1363 | .IP "\(bu" 4 |
| 1364 | perlmodstyle is a style guide for writing modules. |
| 1365 | .IP "\(bu" 4 |
| 1366 | perlnewmod tells about writing and submitting a new module. [561+] |
| 1367 | .IP "\(bu" 4 |
| 1368 | perlpacktut is a \fIpack()\fR tutorial. |
| 1369 | .IP "\(bu" 4 |
| 1370 | perlpod has been rewritten to be clearer and to record the best |
| 1371 | practices gathered over the years. |
| 1372 | .IP "\(bu" 4 |
| 1373 | perlpodspec is a more formal specification of the pod format, |
| 1374 | mainly of interest for writers of pod applications, not to |
| 1375 | people writing in pod. |
| 1376 | .IP "\(bu" 4 |
| 1377 | perlretut is a regular expression tutorial. [561+] |
| 1378 | .IP "\(bu" 4 |
| 1379 | perlrequick is a regular expressions quick-start guide. |
| 1380 | Yes, much quicker than perlretut. [561] |
| 1381 | .IP "\(bu" 4 |
| 1382 | perltodo has been updated. |
| 1383 | .IP "\(bu" 4 |
| 1384 | perltootc has been renamed as perltooc (to not to conflict |
| 1385 | with perltoot in filesystems restricted to \*(L"8.3\*(R" names). |
| 1386 | .IP "\(bu" 4 |
| 1387 | perluniintro is an introduction to using Unicode in Perl. |
| 1388 | (perlunicode is more of a detailed reference and background |
| 1389 | information) |
| 1390 | .IP "\(bu" 4 |
| 1391 | perlutil explains the command line utilities packaged with the Perl |
| 1392 | distribution. [561+] |
| 1393 | .PP |
| 1394 | The following platform-specific documents are available before |
| 1395 | the installation as \s-1README\s0.\fIplatform\fR, and after the installation |
| 1396 | as perl\fIplatform\fR: |
| 1397 | .PP |
| 1398 | .Vb 5 |
| 1399 | \& perlaix perlamiga perlapollo perlbeos perlbs2000 |
| 1400 | \& perlce perlcygwin perldgux perldos perlepoc perlfreebsd perlhpux |
| 1401 | \& perlhurd perlirix perlmachten perlmacos perlmint perlmpeix |
| 1402 | \& perlnetware perlos2 perlos390 perlplan9 perlqnx perlsolaris |
| 1403 | \& perltru64 perluts perlvmesa perlvms perlvos perlwin32 |
| 1404 | .Ve |
| 1405 | .PP |
| 1406 | These documents usually detail one or more of the following subjects: |
| 1407 | configuring, building, testing, installing, and sometimes also using |
| 1408 | Perl on the said platform. |
| 1409 | .PP |
| 1410 | Eastern Asian Perl users are now welcomed in their own languages: |
| 1411 | \&\s-1README\s0.jp (Japanese), \s-1README\s0.ko (Korean), \s-1README\s0.cn (simplified |
| 1412 | Chinese) and \s-1README\s0.tw (traditional Chinese), which are written in |
| 1413 | normal pod but encoded in \s-1EUC\-JP\s0, \s-1EUC\-KR\s0, EUC-CN and Big5. These |
| 1414 | will get installed as |
| 1415 | .PP |
| 1416 | .Vb 1 |
| 1417 | \& perljp perlko perlcn perltw |
| 1418 | .Ve |
| 1419 | .IP "\(bu" 4 |
| 1420 | The documentation for the POSIX-BC platform is called \*(L"\s-1BS2000\s0\*(R", to avoid |
| 1421 | confusion with the Perl \s-1POSIX\s0 module. |
| 1422 | .IP "\(bu" 4 |
| 1423 | The documentation for the WinCE platform is called perlce (\s-1README\s0.ce |
| 1424 | in the source code kit), to avoid confusion with the perlwin32 |
| 1425 | documentation on 8.3\-restricted filesystems. |
| 1426 | .SH "Performance Enhancements" |
| 1427 | .IX Header "Performance Enhancements" |
| 1428 | .IP "\(bu" 4 |
| 1429 | \&\fImap()\fR could get pathologically slow when the result list it generates |
| 1430 | is larger than the source list. The performance has been improved for |
| 1431 | common scenarios. [561] |
| 1432 | .IP "\(bu" 4 |
| 1433 | \&\fIsort()\fR is also fully reentrant, in the sense that the sort function |
| 1434 | can itself call \fIsort()\fR. This did not work reliably in previous |
| 1435 | releases. [561] |
| 1436 | .IP "\(bu" 4 |
| 1437 | \&\fIsort()\fR has been changed to use primarily mergesort internally as |
| 1438 | opposed to the earlier quicksort. For very small lists this may |
| 1439 | result in slightly slower sorting times, but in general the speedup |
| 1440 | should be at least 20%. Additional bonuses are that the worst case |
| 1441 | behaviour of \fIsort()\fR is now better (in computer science terms it now |
| 1442 | runs in time O(N log N), as opposed to quicksort's Theta(N**2) |
| 1443 | worst-case run time behaviour), and that \fIsort()\fR is now stable |
| 1444 | (meaning that elements with identical keys will stay ordered as they |
| 1445 | were before the sort). See the \f(CW\*(C`sort\*(C'\fR pragma for information. |
| 1446 | .Sp |
| 1447 | The story in more detail: suppose you want to serve yourself a little |
| 1448 | slice of Pi. |
| 1449 | .Sp |
| 1450 | .Vb 1 |
| 1451 | \& @digits = ( 3,1,4,1,5,9 ); |
| 1452 | .Ve |
| 1453 | .Sp |
| 1454 | A numerical sort of the digits will yield (1,1,3,4,5,9), as expected. |
| 1455 | Which \f(CW1\fR comes first is hard to know, since one \f(CW1\fR looks pretty |
| 1456 | much like any other. You can regard this as totally trivial, |
| 1457 | or somewhat profound. However, if you just want to sort the even |
| 1458 | digits ahead of the odd ones, then what will |
| 1459 | .Sp |
| 1460 | .Vb 1 |
| 1461 | \& sort { ($a % 2) <=> ($b % 2) } @digits; |
| 1462 | .Ve |
| 1463 | .Sp |
| 1464 | yield? The only even digit, \f(CW4\fR, will come first. But how about |
| 1465 | the odd numbers, which all compare equal? With the quicksort algorithm |
| 1466 | used to implement Perl 5.6 and earlier, the order of ties is left up |
| 1467 | to the sort. So, as you add more and more digits of Pi, the order |
| 1468 | in which the sorted even and odd digits appear will change. |
| 1469 | and, for sufficiently large slices of Pi, the quicksort algorithm |
| 1470 | in Perl 5.8 won't return the same results even if reinvoked with the |
| 1471 | same input. The justification for this rests with quicksort's |
| 1472 | worst case behavior. If you run |
| 1473 | .Sp |
| 1474 | .Vb 1 |
| 1475 | \& sort { $a <=> $b } ( 1 .. $N , 1 .. $N ); |
| 1476 | .Ve |
| 1477 | .Sp |
| 1478 | (something you might approximate if you wanted to merge two sorted |
| 1479 | arrays using sort), doubling \f(CW$N\fR doesn't just double the quicksort time, |
| 1480 | it \fIquadruples\fR it. Quicksort has a worst case run time that can |
| 1481 | grow like N**2, so-called \fIquadratic\fR behaviour, and it can happen |
| 1482 | on patterns that may well arise in normal use. You won't notice this |
| 1483 | for small arrays, but you \fIwill\fR notice it with larger arrays, |
| 1484 | and you may not live long enough for the sort to complete on arrays |
| 1485 | of a million elements. So the 5.8 quicksort scrambles large arrays |
| 1486 | before sorting them, as a statistical defence against quadratic behaviour. |
| 1487 | But that means if you sort the same large array twice, ties may be |
| 1488 | broken in different ways. |
| 1489 | .Sp |
| 1490 | Because of the unpredictability of tie-breaking order, and the quadratic |
| 1491 | worst-case behaviour, quicksort was \fIalmost\fR replaced completely with |
| 1492 | a stable mergesort. \fIStable\fR means that ties are broken to preserve |
| 1493 | the original order of appearance in the input array. So |
| 1494 | .Sp |
| 1495 | .Vb 1 |
| 1496 | \& sort { ($a % 2) <=> ($b % 2) } (3,1,4,1,5,9); |
| 1497 | .Ve |
| 1498 | .Sp |
| 1499 | will yield (4,3,1,1,5,9), guaranteed. The even and odd numbers |
| 1500 | appear in the output in the same order they appeared in the input. |
| 1501 | Mergesort has worst case O(N log N) behaviour, the best value |
| 1502 | attainable. And, ironically, this mergesort does particularly |
| 1503 | well where quicksort goes quadratic: mergesort sorts (1..$N, 1..$N) |
| 1504 | in O(N) time. But quicksort was rescued at the last moment because |
| 1505 | it is faster than mergesort on certain inputs and platforms. |
| 1506 | For example, if you really \fIdon't\fR care about the order of even |
| 1507 | and odd digits, quicksort will run in O(N) time; it's very good |
| 1508 | at sorting many repetitions of a small number of distinct elements. |
| 1509 | The quicksort divide and conquer strategy works well on platforms |
| 1510 | with relatively small, very fast, caches. Eventually, the problem gets |
| 1511 | whittled down to one that fits in the cache, from which point it |
| 1512 | benefits from the increased memory speed. |
| 1513 | .Sp |
| 1514 | Quicksort was rescued by implementing a sort pragma to control aspects |
| 1515 | of the sort. The \fBstable\fR subpragma forces stable behaviour, |
| 1516 | regardless of algorithm. The \fB_quicksort\fR and \fB_mergesort\fR |
| 1517 | subpragmas are heavy-handed ways to select the underlying implementation. |
| 1518 | The leading \f(CW\*(C`_\*(C'\fR is a reminder that these subpragmas may not survive |
| 1519 | beyond 5.8. More appropriate mechanisms for selecting the implementation |
| 1520 | exist, but they wouldn't have arrived in time to save quicksort. |
| 1521 | .IP "\(bu" 4 |
| 1522 | Hashes now use Bob Jenkins \*(L"One\-at\-a\-Time\*(R" hashing key algorithm |
| 1523 | ( http://burtleburtle.net/bob/hash/doobs.html ). This algorithm is |
| 1524 | reasonably fast while producing a much better spread of values than |
| 1525 | the old hashing algorithm (originally by Chris Torek, later tweaked by |
| 1526 | Ilya Zakharevich). Hash values output from the algorithm on a hash of |
| 1527 | all 3\-char printable \s-1ASCII\s0 keys comes much closer to passing the |
| 1528 | \&\s-1DIEHARD\s0 random number generation tests. According to perlbench, this |
| 1529 | change has not affected the overall speed of Perl. |
| 1530 | .IP "\(bu" 4 |
| 1531 | \&\fIunshift()\fR should now be noticeably faster. |
| 1532 | .SH "Installation and Configuration Improvements" |
| 1533 | .IX Header "Installation and Configuration Improvements" |
| 1534 | .Sh "Generic Improvements" |
| 1535 | .IX Subsection "Generic Improvements" |
| 1536 | .IP "\(bu" 4 |
| 1537 | \&\s-1INSTALL\s0 now explains how you can configure Perl to use 64\-bit |
| 1538 | integers even on non\-64\-bit platforms. |
| 1539 | .IP "\(bu" 4 |
| 1540 | Policy.sh policy change: if you are reusing a Policy.sh file |
| 1541 | (see \s-1INSTALL\s0) and you use Configure \-Dprefix=/foo/bar and in the old |
| 1542 | Policy \f(CW$prefix\fR eq \f(CW$siteprefix\fR and \f(CW$prefix\fR eq \f(CW$vendorprefix\fR, all of |
| 1543 | them will now be changed to the new prefix, /foo/bar. (Previously |
| 1544 | only \f(CW$prefix\fR changed.) If you do not like this new behaviour, |
| 1545 | specify prefix, siteprefix, and vendorprefix explicitly. |
| 1546 | .IP "\(bu" 4 |
| 1547 | A new optional location for Perl libraries, otherlibdirs, is available. |
| 1548 | It can be used for example for vendor add-ons without disturbing Perl's |
| 1549 | own library directories. |
| 1550 | .IP "\(bu" 4 |
| 1551 | In many platforms, the vendor-supplied 'cc' is too stripped-down to |
| 1552 | build Perl (basically, 'cc' doesn't do \s-1ANSI\s0 C). If this seems |
| 1553 | to be the case and 'cc' does not seem to be the \s-1GNU\s0 C compiler |
| 1554 | \&'gcc', an automatic attempt is made to find and use 'gcc' instead. |
| 1555 | .IP "\(bu" 4 |
| 1556 | gcc needs to closely track the operating system release to avoid |
| 1557 | build problems. If Configure finds that gcc was built for a different |
| 1558 | operating system release than is running, it now gives a clearly visible |
| 1559 | warning that there may be trouble ahead. |
| 1560 | .IP "\(bu" 4 |
| 1561 | Since Perl 5.8 is not binary-compatible with previous releases |
| 1562 | of Perl, Configure no longer suggests including the 5.005 |
| 1563 | modules in \f(CW@INC\fR. |
| 1564 | .IP "\(bu" 4 |
| 1565 | Configure \f(CW\*(C`\-S\*(C'\fR can now run non\-interactively. [561] |
| 1566 | .IP "\(bu" 4 |
| 1567 | Configure support for pdp11\-style memory models has been removed due |
| 1568 | to obsolescence. [561] |
| 1569 | .IP "\(bu" 4 |
| 1570 | configure.gnu now works with options with whitespace in them. |
| 1571 | .IP "\(bu" 4 |
| 1572 | installperl now outputs everything to \s-1STDERR\s0. |
| 1573 | .IP "\(bu" 4 |
| 1574 | Because PerlIO is now the default on most platforms, \*(L"\-perlio\*(R" doesn't |
| 1575 | get appended to the \f(CW$Config\fR{archname} (also known as $^O) anymore. |
| 1576 | Instead, if you explicitly choose not to use perlio (Configure command |
| 1577 | line option \-Uuseperlio), you will get \*(L"\-stdio\*(R" appended. |
| 1578 | .IP "\(bu" 4 |
| 1579 | Another change related to the architecture name is that \*(L"\-64all\*(R" |
| 1580 | (\-Duse64bitall, or \*(L"maximally 64\-bit\*(R") is appended only if your |
| 1581 | pointers are 64 bits wide. (To be exact, the use64bitall is ignored.) |
| 1582 | .IP "\(bu" 4 |
| 1583 | In \s-1AFS\s0 installations, one can configure the root of the \s-1AFS\s0 to be |
| 1584 | somewhere else than the default \fI/afs\fR by using the Configure |
| 1585 | parameter \f(CW\*(C`\-Dafsroot=/some/where/else\*(C'\fR. |
| 1586 | .IP "\(bu" 4 |
| 1587 | \&\s-1APPLLIB_EXP\s0, a lesser-known configuration-time definition, has been |
| 1588 | documented. It can be used to prepend site-specific directories |
| 1589 | to Perl's default search path (@INC); see \s-1INSTALL\s0 for information. |
| 1590 | .IP "\(bu" 4 |
| 1591 | The version of Berkeley \s-1DB\s0 used when the Perl (and, presumably, the |
| 1592 | DB_File extension) was built is now available as |
| 1593 | \&\f(CW@Config{qw(db_version_major db_version_minor db_version_patch)}\fR |
| 1594 | from Perl and as \f(CW\*(C`DB_VERSION_MAJOR_CFG DB_VERSION_MINOR_CFG |
| 1595 | DB_VERSION_PATCH_CFG\*(C'\fR from C. |
| 1596 | .IP "\(bu" 4 |
| 1597 | Building Berkeley \s-1DB3\s0 for compatibility modes for \s-1DB\s0, \s-1NDBM\s0, and \s-1ODBM\s0 |
| 1598 | has been documented in \s-1INSTALL\s0. |
| 1599 | .IP "\(bu" 4 |
| 1600 | If you have \s-1CPAN\s0 access (either network or a local copy such as a |
| 1601 | \&\s-1CD\-ROM\s0) you can during specify extra modules to Configure to build and |
| 1602 | install with Perl using the \-Dextras=... option. See \s-1INSTALL\s0 for |
| 1603 | more details. |
| 1604 | .IP "\(bu" 4 |
| 1605 | In addition to config.over, a new override file, config.arch, is |
| 1606 | available. This file is supposed to be used by hints file writers |
| 1607 | for architecture-wide changes (as opposed to config.over which is |
| 1608 | for site-wide changes). |
| 1609 | .IP "\(bu" 4 |
| 1610 | If your file system supports symbolic links, you can build Perl outside |
| 1611 | of the source directory by |
| 1612 | .Sp |
| 1613 | .Vb 3 |
| 1614 | \& mkdir perl/build/directory |
| 1615 | \& cd perl/build/directory |
| 1616 | \& sh /path/to/perl/source/Configure -Dmksymlinks ... |
| 1617 | .Ve |
| 1618 | .Sp |
| 1619 | This will create in perl/build/directory a tree of symbolic links |
| 1620 | pointing to files in /path/to/perl/source. The original files are left |
| 1621 | unaffected. After Configure has finished, you can just say |
| 1622 | .Sp |
| 1623 | .Vb 1 |
| 1624 | \& make all test |
| 1625 | .Ve |
| 1626 | .Sp |
| 1627 | and Perl will be built and tested, all in perl/build/directory. |
| 1628 | [561] |
| 1629 | .IP "\(bu" 4 |
| 1630 | For Perl developers, several new make targets for profiling |
| 1631 | and debugging have been added; see perlhack. |
| 1632 | .RS 4 |
| 1633 | .IP "\(bu" 8 |
| 1634 | Use of the \fIgprof\fR tool to profile Perl has been documented in |
| 1635 | perlhack. There is a make target called \*(L"perl.gprof\*(R" for |
| 1636 | generating a gprofiled Perl executable. |
| 1637 | .IP "\(bu" 8 |
| 1638 | If you have \s-1GCC\s0 3, there is a make target called \*(L"perl.gcov\*(R" for |
| 1639 | creating a gcoved Perl executable for coverage analysis. See |
| 1640 | perlhack. |
| 1641 | .IP "\(bu" 8 |
| 1642 | If you are on \s-1IRIX\s0 or Tru64 platforms, new profiling/debugging options |
| 1643 | have been added; see perlhack for more information about pixie and |
| 1644 | Third Degree. |
| 1645 | .RE |
| 1646 | .RS 4 |
| 1647 | .RE |
| 1648 | .IP "\(bu" 4 |
| 1649 | Guidelines of how to construct minimal Perl installations have |
| 1650 | been added to \s-1INSTALL\s0. |
| 1651 | .IP "\(bu" 4 |
| 1652 | The Thread extension is now not built at all under ithreads |
| 1653 | (\f(CW\*(C`Configure \-Duseithreads\*(C'\fR) because it wouldn't work anyway (the |
| 1654 | Thread extension requires being Configured with \f(CW\*(C`\-Duse5005threads\*(C'\fR). |
| 1655 | .Sp |
| 1656 | \&\fBNote that the 5.005 threads are unsupported and deprecated: if you |
| 1657 | have code written for the old threads you should migrate it to the |
| 1658 | new ithreads model.\fR |
| 1659 | .IP "\(bu" 4 |
| 1660 | The Gconvert macro ($Config{d_Gconvert}) used by perl for stringifying |
| 1661 | floating-point numbers is now more picky about using sprintf %.*g |
| 1662 | rules for the conversion. Some platforms that used to use gcvt may |
| 1663 | now resort to the slower sprintf. |
| 1664 | .IP "\(bu" 4 |
| 1665 | The obsolete method of making a special (e.g., debugging) flavor |
| 1666 | of perl by saying |
| 1667 | .Sp |
| 1668 | .Vb 1 |
| 1669 | \& make LIBPERL=libperld.a |
| 1670 | .Ve |
| 1671 | .Sp |
| 1672 | has been removed. Use \-DDEBUGGING instead. |
| 1673 | .Sh "New Or Improved Platforms" |
| 1674 | .IX Subsection "New Or Improved Platforms" |
| 1675 | For the list of platforms known to support Perl, |
| 1676 | see \*(L"Supported Platforms\*(R" in perlport. |
| 1677 | .IP "\(bu" 4 |
| 1678 | \&\s-1AIX\s0 dynamic loading should be now better supported. |
| 1679 | .IP "\(bu" 4 |
| 1680 | \&\s-1AIX\s0 should now work better with gcc, threads, and 64\-bitness. Also the |
| 1681 | long doubles support in \s-1AIX\s0 should be better now. See perlaix. |
| 1682 | .IP "\(bu" 4 |
| 1683 | AtheOS ( http://www.atheos.cx/ ) is a new platform. |
| 1684 | .IP "\(bu" 4 |
| 1685 | BeOS has been reclaimed. |
| 1686 | .IP "\(bu" 4 |
| 1687 | The \s-1DG/UX\s0 platform now supports 5.005\-style threads. |
| 1688 | See perldgux. |
| 1689 | .IP "\(bu" 4 |
| 1690 | The DYNIX/ptx platform (also known as dynixptx) is supported at or |
| 1691 | near osvers 4.5.2. |
| 1692 | .IP "\(bu" 4 |
| 1693 | \&\s-1EBCDIC\s0 platforms (z/OS (also known as \s-1OS/390\s0), \s-1POSIX\-BC\s0, and \s-1VM/ESA\s0) |
| 1694 | have been regained. Many test suite tests still fail and the |
| 1695 | co-existence of Unicode and \s-1EBCDIC\s0 isn't quite settled, but the |
| 1696 | situation is much better than with Perl 5.6. See perlos390, |
| 1697 | perlbs2000 (for \s-1POSIX\-BC\s0), and perlvmesa for more information. |
| 1698 | .IP "\(bu" 4 |
| 1699 | Building perl with \-Duseithreads or \-Duse5005threads now works under |
| 1700 | HP-UX 10.20 (previously it only worked under 10.30 or later). You will |
| 1701 | need a thread library package installed. See \s-1README\s0.hpux. [561] |
| 1702 | .IP "\(bu" 4 |
| 1703 | Mac \s-1OS\s0 Classic is now supported in the mainstream source package |
| 1704 | (MacPerl has of course been available since perl 5.004 but now the |
| 1705 | source code bases of standard Perl and MacPerl have been synchronised) |
| 1706 | [561] |
| 1707 | .IP "\(bu" 4 |
| 1708 | Mac \s-1OS\s0 X (or Darwin) should now be able to build Perl even on \s-1HFS+\s0 |
| 1709 | filesystems. (The case-insensitivity used to confuse the Perl build |
| 1710 | process.) |
| 1711 | .IP "\(bu" 4 |
| 1712 | \&\s-1NCR\s0 MP-RAS is now supported. [561] |
| 1713 | .IP "\(bu" 4 |
| 1714 | All the NetBSD specific patches (except for the installation |
| 1715 | specific ones) have been merged back to the main distribution. |
| 1716 | .IP "\(bu" 4 |
| 1717 | NetWare from Novell is now supported. See perlnetware. |
| 1718 | .IP "\(bu" 4 |
| 1719 | NonStop-UX is now supported. [561] |
| 1720 | .IP "\(bu" 4 |
| 1721 | \&\s-1NEC\s0 SUPER-UX is now supported. |
| 1722 | .IP "\(bu" 4 |
| 1723 | All the OpenBSD specific patches (except for the installation |
| 1724 | specific ones) have been merged back to the main distribution. |
| 1725 | .IP "\(bu" 4 |
| 1726 | Perl has been tested with the \s-1GNU\s0 pth userlevel thread package |
| 1727 | ( http://www.gnu.org/software/pth/pth.html ). All thread tests |
| 1728 | of Perl now work, but not without adding some \fIyield()\fRs to the tests, |
| 1729 | so while pth (and other userlevel thread implementations) can be |
| 1730 | considered to be \*(L"working\*(R" with Perl ithreads, keep in mind the |
| 1731 | possible non-preemptability of the underlying thread implementation. |
| 1732 | .IP "\(bu" 4 |
| 1733 | Stratus \s-1VOS\s0 is now supported using Perl's native build method |
| 1734 | (Configure). This is the recommended method to build Perl on |
| 1735 | \&\s-1VOS\s0. The older methods, which build miniperl, are still |
| 1736 | available. See perlvos. [561+] |
| 1737 | .IP "\(bu" 4 |
| 1738 | The Amdahl \s-1UTS\s0 \s-1UNIX\s0 mainframe platform is now supported. [561] |
| 1739 | .IP "\(bu" 4 |
| 1740 | WinCE is now supported. See perlce. |
| 1741 | .IP "\(bu" 4 |
| 1742 | z/OS (formerly known as \s-1OS/390\s0, formerly known as \s-1MVS\s0 \s-1OE\s0) now has |
| 1743 | support for dynamic loading. This is not selected by default, |
| 1744 | however, you must specify \-Dusedl in the arguments of Configure. [561] |
| 1745 | .SH "Selected Bug Fixes" |
| 1746 | .IX Header "Selected Bug Fixes" |
| 1747 | Numerous memory leaks and uninitialized memory accesses have been |
| 1748 | hunted down. Most importantly, anonymous subs used to leak quite |
| 1749 | a bit. [561] |
| 1750 | .IP "\(bu" 4 |
| 1751 | The autouse pragma didn't work for Multi::Part::Function::Names. |
| 1752 | .IP "\(bu" 4 |
| 1753 | \&\fIcaller()\fR could cause core dumps in certain situations. Carp was |
| 1754 | sometimes affected by this problem. In particular, \fIcaller()\fR now |
| 1755 | returns a subroutine name of \f(CW\*(C`(unknown)\*(C'\fR for subroutines that have |
| 1756 | been removed from the symbol table. |
| 1757 | .IP "\(bu" 4 |
| 1758 | chop(@list) in list context returned the characters chopped in |
| 1759 | reverse order. This has been reversed to be in the right order. [561] |
| 1760 | .IP "\(bu" 4 |
| 1761 | Configure no longer includes the \s-1DBM\s0 libraries (dbm, gdbm, db, ndbm) |
| 1762 | when building the Perl binary. The only exception to this is SunOS 4.x, |
| 1763 | which needs them. [561] |
| 1764 | .IP "\(bu" 4 |
| 1765 | The behaviour of non-decimal but numeric string constants such as |
| 1766 | \&\*(L"0x23\*(R" was platform\-dependent: in some platforms that was seen as 35, |
| 1767 | in some as 0, in some as a floating point number (don't ask). This |
| 1768 | was caused by Perl's using the operating system libraries in a situation |
| 1769 | where the result of the string to number conversion is undefined: now |
| 1770 | Perl consistently handles such strings as zero in numeric contexts. |
| 1771 | .IP "\(bu" 4 |
| 1772 | Several debugger fixes: exit code now reflects the script exit code, |
| 1773 | condition \f(CW"0"\fR now treated correctly, the \f(CW\*(C`d\*(C'\fR command now checks |
| 1774 | line number, \f(CW$.\fR no longer gets corrupted, and all debugger output |
| 1775 | now goes correctly to the socket if RemotePort is set. [561] |
| 1776 | .IP "\(bu" 4 |
| 1777 | The debugger (perl5db.pl) has been modified to present a more |
| 1778 | consistent commands interface, via (CommandSet=580). perl5db.t was |
| 1779 | also added to test the changes, and as a placeholder for further tests. |
| 1780 | .Sp |
| 1781 | See perldebug. |
| 1782 | .IP "\(bu" 4 |
| 1783 | The debugger has a new \f(CW\*(C`dumpDepth\*(C'\fR option to control the maximum |
| 1784 | depth to which nested structures are dumped. The \f(CW\*(C`x\*(C'\fR command has |
| 1785 | been extended so that \f(CW\*(C`x N EXPR\*(C'\fR dumps out the value of \fI\s-1EXPR\s0\fR to a |
| 1786 | depth of at most \fIN\fR levels. |
| 1787 | .IP "\(bu" 4 |
| 1788 | The debugger can now show lexical variables if you have the \s-1CPAN\s0 |
| 1789 | module PadWalker installed. |
| 1790 | .IP "\(bu" 4 |
| 1791 | The order of DESTROYs has been made more predictable. |
| 1792 | .IP "\(bu" 4 |
| 1793 | Perl 5.6.0 could emit spurious warnings about redefinition of |
| 1794 | \&\fIdl_error()\fR when statically building extensions into perl. |
| 1795 | This has been corrected. [561] |
| 1796 | .IP "\(bu" 4 |
| 1797 | dprofpp \-R didn't work. |
| 1798 | .IP "\(bu" 4 |
| 1799 | \&\f(CW*foo{FORMAT}\fR now works. |
| 1800 | .IP "\(bu" 4 |
| 1801 | Infinity is now recognized as a number. |
| 1802 | .IP "\(bu" 4 |
| 1803 | UNIVERSAL::isa no longer caches methods incorrectly. (This broke |
| 1804 | the Tk extension with 5.6.0.) [561] |
| 1805 | .IP "\(bu" 4 |
| 1806 | Lexicals I: lexicals outside an eval "\*(L" weren't resolved |
| 1807 | correctly inside a subroutine definition inside the eval \*(R"\*(L" if they |
| 1808 | were not already referenced in the top level of the eval\*(R""ed code. |
| 1809 | .IP "\(bu" 4 |
| 1810 | Lexicals \s-1II:\s0 lexicals leaked at file scope into subroutines that |
| 1811 | were declared before the lexicals. |
| 1812 | .IP "\(bu" 4 |
| 1813 | Lexical warnings now propagating correctly between scopes |
| 1814 | and into \f(CW\*(C`eval "..."\*(C'\fR. |
| 1815 | .IP "\(bu" 4 |
| 1816 | \&\f(CW\*(C`use warnings qw(FATAL all)\*(C'\fR did not work as intended. This has been |
| 1817 | corrected. [561] |
| 1818 | .IP "\(bu" 4 |
| 1819 | \&\fIwarnings::enabled()\fR now reports the state of $^W correctly if the caller |
| 1820 | isn't using lexical warnings. [561] |
| 1821 | .IP "\(bu" 4 |
| 1822 | Line renumbering with eval and \f(CW\*(C`#line\*(C'\fR now works. [561] |
| 1823 | .IP "\(bu" 4 |
| 1824 | Fixed numerous memory leaks, especially in eval "". |
| 1825 | .IP "\(bu" 4 |
| 1826 | Localised tied variables no longer leak memory |
| 1827 | .Sp |
| 1828 | .Vb 2 |
| 1829 | \& use Tie::Hash; |
| 1830 | \& tie my %tied_hash => 'Tie::StdHash'; |
| 1831 | .Ve |
| 1832 | .Sp |
| 1833 | .Vb 1 |
| 1834 | \& ... |
| 1835 | .Ve |
| 1836 | .Sp |
| 1837 | .Vb 3 |
| 1838 | \& # Used to leak memory every time local() was called; |
| 1839 | \& # in a loop, this added up. |
| 1840 | \& local($tied_hash{Foo}) = 1; |
| 1841 | .Ve |
| 1842 | .IP "\(bu" 4 |
| 1843 | Localised hash elements (and \f(CW%ENV\fR) are correctly unlocalised to not |
| 1844 | exist, if they didn't before they were localised. |
| 1845 | .Sp |
| 1846 | .Vb 2 |
| 1847 | \& use Tie::Hash; |
| 1848 | \& tie my %tied_hash => 'Tie::StdHash'; |
| 1849 | .Ve |
| 1850 | .Sp |
| 1851 | .Vb 1 |
| 1852 | \& ... |
| 1853 | .Ve |
| 1854 | .Sp |
| 1855 | .Vb 1 |
| 1856 | \& # Nothing has set the FOO element so far |
| 1857 | .Ve |
| 1858 | .Sp |
| 1859 | .Vb 1 |
| 1860 | \& { local $tied_hash{FOO} = 'Bar' } |
| 1861 | .Ve |
| 1862 | .Sp |
| 1863 | .Vb 2 |
| 1864 | \& # This used to print, but not now. |
| 1865 | \& print "exists!\en" if exists $tied_hash{FOO}; |
| 1866 | .Ve |
| 1867 | .Sp |
| 1868 | As a side effect of this fix, tied hash interfaces \fBmust\fR define |
| 1869 | the \s-1EXISTS\s0 and \s-1DELETE\s0 methods. |
| 1870 | .IP "\(bu" 4 |
| 1871 | \&\fImkdir()\fR now ignores trailing slashes in the directory name, |
| 1872 | as mandated by \s-1POSIX\s0. |
| 1873 | .IP "\(bu" 4 |
| 1874 | Some versions of glibc have a broken \fImodfl()\fR. This affects builds |
| 1875 | with \f(CW\*(C`\-Duselongdouble\*(C'\fR. This version of Perl detects this brokenness |
| 1876 | and has a workaround for it. The glibc release 2.2.2 is known to have |
| 1877 | fixed the \fImodfl()\fR bug. |
| 1878 | .IP "\(bu" 4 |
| 1879 | Modulus of unsigned numbers now works (4063328477 % 65535 used to |
| 1880 | return 27406, instead of 27047). [561] |
| 1881 | .IP "\(bu" 4 |
| 1882 | Some \*(L"not a number\*(R" warnings introduced in 5.6.0 eliminated to be |
| 1883 | more compatible with 5.005. Infinity is now recognised as a number. [561] |
| 1884 | .IP "\(bu" 4 |
| 1885 | Numeric conversions did not recognize changes in the string value |
| 1886 | properly in certain circumstances. [561] |
| 1887 | .IP "\(bu" 4 |
| 1888 | Attributes (such as :shared) didn't work with \fIour()\fR. |
| 1889 | .IP "\(bu" 4 |
| 1890 | \&\fIour()\fR variables will not cause bogus \*(L"Variable will not stay shared\*(R" |
| 1891 | warnings. [561] |
| 1892 | .IP "\(bu" 4 |
| 1893 | \&\*(L"our\*(R" variables of the same name declared in two sibling blocks |
| 1894 | resulted in bogus warnings about \*(L"redeclaration\*(R" of the variables. |
| 1895 | The problem has been corrected. [561] |
| 1896 | .IP "\(bu" 4 |
| 1897 | pack \*(L"Z\*(R" now correctly terminates the string with \*(L"\e0\*(R". |
| 1898 | .IP "\(bu" 4 |
| 1899 | Fix password routines which in some shadow password platforms |
| 1900 | (e.g. \s-1HP\-UX\s0) caused \fIgetpwent()\fR to return every other entry. |
| 1901 | .IP "\(bu" 4 |
| 1902 | The \s-1PERL5OPT\s0 environment variable (for passing command line arguments |
| 1903 | to Perl) didn't work for more than a single group of options. [561] |
| 1904 | .IP "\(bu" 4 |
| 1905 | \&\s-1PERL5OPT\s0 with embedded spaces didn't work. |
| 1906 | .IP "\(bu" 4 |
| 1907 | \&\fIprintf()\fR no longer resets the numeric locale to \*(L"C\*(R". |
| 1908 | .IP "\(bu" 4 |
| 1909 | \&\f(CW\*(C`qw(a\e\eb)\*(C'\fR now parses correctly as \f(CW'a\e\eb'\fR: that is, as three |
| 1910 | characters, not four. [561] |
| 1911 | .IP "\(bu" 4 |
| 1912 | \&\fIpos()\fR did not return the correct value within s///ge in earlier |
| 1913 | versions. This is now handled correctly. [561] |
| 1914 | .IP "\(bu" 4 |
| 1915 | Printing quads (64\-bit integers) with printf/sprintf now works |
| 1916 | without the q L ll prefixes (assuming you are on a quad-capable platform). |
| 1917 | .IP "\(bu" 4 |
| 1918 | Regular expressions on references and overloaded scalars now work. [561+] |
| 1919 | .IP "\(bu" 4 |
| 1920 | Right-hand side magic (\s-1GMAGIC\s0) could in many cases such as string |
| 1921 | concatenation be invoked too many times. |
| 1922 | .IP "\(bu" 4 |
| 1923 | \&\fIscalar()\fR now forces scalar context even when used in void context. |
| 1924 | .IP "\(bu" 4 |
| 1925 | \&\s-1SOCKS\s0 support is now much more robust. |
| 1926 | .IP "\(bu" 4 |
| 1927 | \&\fIsort()\fR arguments are now compiled in the right wantarray context |
| 1928 | (they were accidentally using the context of the \fIsort()\fR itself). |
| 1929 | The comparison block is now run in scalar context, and the arguments |
| 1930 | to be sorted are always provided list context. [561] |
| 1931 | .IP "\(bu" 4 |
| 1932 | Changed the \s-1POSIX\s0 character class \f(CW\*(C`[[:space:]]\*(C'\fR to include the (very |
| 1933 | rarely used) vertical tab character. Added a new POSIX-ish character |
| 1934 | class \f(CW\*(C`[[:blank:]]\*(C'\fR which stands for horizontal whitespace |
| 1935 | (currently, the space and the tab). |
| 1936 | .IP "\(bu" 4 |
| 1937 | The tainting behaviour of \fIsprintf()\fR has been rationalized. It does |
| 1938 | not taint the result of floating point formats anymore, making the |
| 1939 | behaviour consistent with that of string interpolation. [561] |
| 1940 | .IP "\(bu" 4 |
| 1941 | Some cases of inconsistent taint propagation (such as within hash |
| 1942 | values) have been fixed. |
| 1943 | .IP "\(bu" 4 |
| 1944 | The \s-1RE\s0 engine found in Perl 5.6.0 accidentally pessimised certain kinds |
| 1945 | of simple pattern matches. These are now handled better. [561] |
| 1946 | .IP "\(bu" 4 |
| 1947 | Regular expression debug output (whether through \f(CW\*(C`use re 'debug'\*(C'\fR |
| 1948 | or via \f(CW\*(C`\-Dr\*(C'\fR) now looks better. [561] |
| 1949 | .IP "\(bu" 4 |
| 1950 | Multi-line matches like \f(CW\*(C`"a\enxb\en" =~ /(?!\eA)x/m\*(C'\fR were flawed. The |
| 1951 | bug has been fixed. [561] |
| 1952 | .IP "\(bu" 4 |
| 1953 | Use of $& could trigger a core dump under some situations. This |
| 1954 | is now avoided. [561] |
| 1955 | .IP "\(bu" 4 |
| 1956 | The regular expression captured submatches ($1, \f(CW$2\fR, ...) are now |
| 1957 | more consistently unset if the match fails, instead of leaving false |
| 1958 | data lying around in them. [561] |
| 1959 | .IP "\(bu" 4 |
| 1960 | \&\fIreadline()\fR on files opened in \*(L"slurp\*(R" mode could return an extra |
| 1961 | "" (blank line) at the end in certain situations. This has been |
| 1962 | corrected. [561] |
| 1963 | .IP "\(bu" 4 |
| 1964 | Autovivification of symbolic references of special variables described |
| 1965 | in perlvar (as in \f(CW\*(C`${$num}\*(C'\fR) was accidentally disabled. This works |
| 1966 | again now. [561] |
| 1967 | .IP "\(bu" 4 |
| 1968 | Sys::Syslog ignored the \f(CW\*(C`LOG_AUTH\*(C'\fR constant. |
| 1969 | .IP "\(bu" 4 |
| 1970 | $AUTOLOAD, \fIsort()\fR, \fIlock()\fR, and spawning subprocesses |
| 1971 | in multiple threads simultaneously are now thread\-safe. |
| 1972 | .IP "\(bu" 4 |
| 1973 | Tie::Array's \s-1SPLICE\s0 method was broken. |
| 1974 | .IP "\(bu" 4 |
| 1975 | Allow a read-only string on the left-hand side of a non-modifying tr///. |
| 1976 | .IP "\(bu" 4 |
| 1977 | If \f(CW\*(C`STDERR\*(C'\fR is tied, warnings caused by \f(CW\*(C`warn\*(C'\fR and \f(CW\*(C`die\*(C'\fR now |
| 1978 | correctly pass to it. |
| 1979 | .IP "\(bu" 4 |
| 1980 | Several Unicode fixes. |
| 1981 | .RS 4 |
| 1982 | .IP "\(bu" 8 |
| 1983 | BOMs (byte order marks) at the beginning of Perl files |
| 1984 | (scripts, modules) should now be transparently skipped. |
| 1985 | \&\s-1UTF\-16\s0 and \s-1UCS\-2\s0 encoded Perl files should now be read correctly. |
| 1986 | .IP "\(bu" 8 |
| 1987 | The character tables have been updated to Unicode 3.2.0. |
| 1988 | .IP "\(bu" 8 |
| 1989 | Comparing with utf8 data does not magically upgrade non\-utf8 data |
| 1990 | into utf8. (This was a problem for example if you were mixing data |
| 1991 | from I/O and Unicode data: your output might have got magically encoded |
| 1992 | as \s-1UTF\-8\s0.) |
| 1993 | .IP "\(bu" 8 |
| 1994 | Generating illegal Unicode code points such as U+FFFE, or the \s-1UTF\-16\s0 |
| 1995 | surrogates, now also generates an optional warning. |
| 1996 | .IP "\(bu" 8 |
| 1997 | \&\f(CW\*(C`IsAlnum\*(C'\fR, \f(CW\*(C`IsAlpha\*(C'\fR, and \f(CW\*(C`IsWord\*(C'\fR now match titlecase. |
| 1998 | .IP "\(bu" 8 |
| 1999 | Concatenation with the \f(CW\*(C`.\*(C'\fR operator or via variable interpolation, |
| 2000 | \&\f(CW\*(C`eq\*(C'\fR, \f(CW\*(C`substr\*(C'\fR, \f(CW\*(C`reverse\*(C'\fR, \f(CW\*(C`quotemeta\*(C'\fR, the \f(CW\*(C`x\*(C'\fR operator, |
| 2001 | substitution with \f(CW\*(C`s///\*(C'\fR, single-quoted \s-1UTF\-8\s0, should now work. |
| 2002 | .IP "\(bu" 8 |
| 2003 | The \f(CW\*(C`tr///\*(C'\fR operator now works. Note that the \f(CW\*(C`tr///CU\*(C'\fR |
| 2004 | functionality has been removed (but see pack('U0', ...)). |
| 2005 | .IP "\(bu" 8 |
| 2006 | \&\f(CW\*(C`eval "v200"\*(C'\fR now works. |
| 2007 | .IP "\(bu" 8 |
| 2008 | Perl 5.6.0 parsed m/\ex{ab}/ incorrectly, leading to spurious warnings. |
| 2009 | This has been corrected. [561] |
| 2010 | .IP "\(bu" 8 |
| 2011 | Zero entries were missing from the Unicode classes such as \f(CW\*(C`IsDigit\*(C'\fR. |
| 2012 | .RE |
| 2013 | .RS 4 |
| 2014 | .RE |
| 2015 | .IP "\(bu" 4 |
| 2016 | Large unsigned numbers (those above 2**31) could sometimes lose their |
| 2017 | unsignedness, causing bogus results in arithmetic operations. [561] |
| 2018 | .IP "\(bu" 4 |
| 2019 | The Perl parser has been stress tested using both random input and |
| 2020 | Markov chain input and the few found crashes and lockups have been |
| 2021 | fixed. |
| 2022 | .Sh "Platform Specific Changes and Fixes" |
| 2023 | .IX Subsection "Platform Specific Changes and Fixes" |
| 2024 | .IP "\(bu" 4 |
| 2025 | \&\s-1BSDI\s0 4.* |
| 2026 | .Sp |
| 2027 | Perl now works on post\-4.0 BSD/OSes. |
| 2028 | .IP "\(bu" 4 |
| 2029 | All BSDs |
| 2030 | .Sp |
| 2031 | Setting \f(CW$0\fR now works (as much as possible; see perlvar for details). |
| 2032 | .IP "\(bu" 4 |
| 2033 | Cygwin |
| 2034 | .Sp |
| 2035 | Numerous updates; currently synchronised with Cygwin 1.3.10. |
| 2036 | .IP "\(bu" 4 |
| 2037 | Previously DYNIX/ptx had problems in its Configure probe for non-blocking I/O. |
| 2038 | .IP "\(bu" 4 |
| 2039 | \&\s-1EPOC\s0 |
| 2040 | .Sp |
| 2041 | \&\s-1EPOC\s0 now better supported. See \s-1README\s0.epoc. [561] |
| 2042 | .IP "\(bu" 4 |
| 2043 | FreeBSD 3.* |
| 2044 | .Sp |
| 2045 | Perl now works on post\-3.0 FreeBSDs. |
| 2046 | .IP "\(bu" 4 |
| 2047 | HP-UX |
| 2048 | .Sp |
| 2049 | \&\s-1README\s0.hpux updated; \f(CW\*(C`Configure \-Duse64bitall\*(C'\fR now works; |
| 2050 | now uses HP-UX malloc instead of Perl malloc. |
| 2051 | .IP "\(bu" 4 |
| 2052 | \&\s-1IRIX\s0 |
| 2053 | .Sp |
| 2054 | Numerous compilation flag and hint enhancements; accidental mixing |
| 2055 | of 32\-bit and 64\-bit libraries (a doomed attempt) made much harder. |
| 2056 | .IP "\(bu" 4 |
| 2057 | Linux |
| 2058 | .RS 4 |
| 2059 | .IP "\(bu" 8 |
| 2060 | Long doubles should now work (see \s-1INSTALL\s0). [561] |
| 2061 | .IP "\(bu" 8 |
| 2062 | Linux previously had problems related to sockaddrlen when using |
| 2063 | \&\fIaccept()\fR, \fIrecvfrom()\fR (in Perl: \fIrecv()\fR), \fIgetpeername()\fR, and |
| 2064 | \&\fIgetsockname()\fR. |
| 2065 | .RE |
| 2066 | .RS 4 |
| 2067 | .RE |
| 2068 | .IP "\(bu" 4 |
| 2069 | Mac \s-1OS\s0 Classic |
| 2070 | .Sp |
| 2071 | Compilation of the standard Perl distribution in Mac \s-1OS\s0 Classic should |
| 2072 | now work if you have the Metrowerks development environment and the |
| 2073 | missing Mac-specific toolkit bits. Contact the macperl mailing list |
| 2074 | for details. |
| 2075 | .IP "\(bu" 4 |
| 2076 | MPE/iX |
| 2077 | .Sp |
| 2078 | MPE/iX update after Perl 5.6.0. See \s-1README\s0.mpeix. [561] |
| 2079 | .IP "\(bu" 4 |
| 2080 | NetBSD/threads: try installing the \s-1GNU\s0 pth (should be in the |
| 2081 | packages collection, or http://www.gnu.org/software/pth/), |
| 2082 | and Configure with \-Duseithreads. |
| 2083 | .IP "\(bu" 4 |
| 2084 | NetBSD/sparc |
| 2085 | .Sp |
| 2086 | Perl now works on NetBSD/sparc. |
| 2087 | .IP "\(bu" 4 |
| 2088 | \&\s-1OS/2\s0 |
| 2089 | .Sp |
| 2090 | Now works with usethreads (see \s-1INSTALL\s0). [561] |
| 2091 | .IP "\(bu" 4 |
| 2092 | Solaris |
| 2093 | .Sp |
| 2094 | 64\-bitness using the Sun Workshop compiler now works. |
| 2095 | .IP "\(bu" 4 |
| 2096 | Stratus \s-1VOS\s0 |
| 2097 | .Sp |
| 2098 | The native build method requires at least \s-1VOS\s0 Release 14.5.0 |
| 2099 | and \s-1GNU\s0 \*(C+/GNU Tools 2.0.1 or later. The Perl pack function |
| 2100 | now maps overflowed values to +infinity and underflowed values |
| 2101 | to \-infinity. |
| 2102 | .IP "\(bu" 4 |
| 2103 | Tru64 (aka Digital \s-1UNIX\s0, aka \s-1DEC\s0 \s-1OSF/1\s0) |
| 2104 | .Sp |
| 2105 | The operating system version letter now recorded in \f(CW$Config\fR{osvers}. |
| 2106 | Allow compiling with gcc (previously explicitly forbidden). Compiling |
| 2107 | with gcc still not recommended because buggy code results, even with |
| 2108 | gcc 2.95.2. |
| 2109 | .IP "\(bu" 4 |
| 2110 | Unicos |
| 2111 | .Sp |
| 2112 | Fixed various alignment problems that lead into core dumps either |
| 2113 | during build or later; no longer dies on math errors at runtime; |
| 2114 | now using full quad integers (64 bits), previously was using |
| 2115 | only 46 bit integers for speed. |
| 2116 | .IP "\(bu" 4 |
| 2117 | \&\s-1VMS\s0 |
| 2118 | .Sp |
| 2119 | See \*(L"Socket Extension Dynamic in \s-1VMS\s0\*(R" and \*(L"IEEE\-format Floating Point Default on OpenVMS Alpha\*(R" for important changes not otherwise listed here. |
| 2120 | .Sp |
| 2121 | \&\fIchdir()\fR now works better despite a \s-1CRT\s0 bug; now works with \s-1MULTIPLICITY\s0 |
| 2122 | (see \s-1INSTALL\s0); now works with Perl's malloc. |
| 2123 | .Sp |
| 2124 | The tainting of \f(CW%ENV\fR elements via \f(CW\*(C`keys\*(C'\fR or \f(CW\*(C`values\*(C'\fR was previously |
| 2125 | unimplemented. It now works as documented. |
| 2126 | .Sp |
| 2127 | The \f(CW\*(C`waitpid\*(C'\fR emulation has been improved. The worst bug (now fixed) |
| 2128 | was that a pid of \-1 would cause a wildcard search of all processes on |
| 2129 | the system. |
| 2130 | .Sp |
| 2131 | POSIX-style signals are now emulated much better on \s-1VMS\s0 versions prior |
| 2132 | to 7.0. |
| 2133 | .Sp |
| 2134 | The \f(CW\*(C`system\*(C'\fR function and backticks operator have improved |
| 2135 | functionality and better error handling. [561] |
| 2136 | .Sp |
| 2137 | File access tests now use current process privileges rather than the |
| 2138 | user's default privileges, which could sometimes result in a mismatch |
| 2139 | between reported access and actual access. This improvement is only |
| 2140 | available on \s-1VMS\s0 v6.0 and later. |
| 2141 | .Sp |
| 2142 | There is a new \f(CW\*(C`kill\*(C'\fR implementation based on \f(CW\*(C`sys$sigprc\*(C'\fR that allows |
| 2143 | older \s-1VMS\s0 systems (pre\-7.0) to use \f(CW\*(C`kill\*(C'\fR to send signals rather than |
| 2144 | simply force exit. This implementation also allows later systems to |
| 2145 | call \f(CW\*(C`kill\*(C'\fR from within a signal handler. |
| 2146 | .Sp |
| 2147 | Iterative logical name translations are now limited to 10 iterations in |
| 2148 | imitation of \s-1SHOW\s0 \s-1LOGICAL\s0 and other OpenVMS facilities. |
| 2149 | .IP "\(bu" 4 |
| 2150 | Windows |
| 2151 | .RS 4 |
| 2152 | .IP "\(bu" 8 |
| 2153 | Signal handling now works better than it used to. It is now implemented |
| 2154 | using a Windows message loop, and is therefore less prone to random |
| 2155 | crashes. |
| 2156 | .IP "\(bu" 8 |
| 2157 | \&\fIfork()\fR emulation is now more robust, but still continues to have a few |
| 2158 | esoteric bugs and caveats. See perlfork for details. [561+] |
| 2159 | .IP "\(bu" 8 |
| 2160 | A failed (pseudo)fork now returns undef and sets errno to \s-1EAGAIN\s0. [561] |
| 2161 | .IP "\(bu" 8 |
| 2162 | The following modules now work on Windows: |
| 2163 | .Sp |
| 2164 | .Vb 4 |
| 2165 | \& ExtUtils::Embed [561] |
| 2166 | \& IO::Pipe |
| 2167 | \& IO::Poll |
| 2168 | \& Net::Ping |
| 2169 | .Ve |
| 2170 | .IP "\(bu" 8 |
| 2171 | \&\fIIO::File::new_tmpfile()\fR is no longer limited to 32767 invocations |
| 2172 | per\-process. |
| 2173 | .IP "\(bu" 8 |
| 2174 | Better \fIchdir()\fR return value for a non-existent directory. |
| 2175 | .IP "\(bu" 8 |
| 2176 | Compiling perl using the 64\-bit Platform \s-1SDK\s0 tools is now supported. |
| 2177 | .IP "\(bu" 8 |
| 2178 | The \fIWin32::SetChildShowWindow()\fR builtin can be used to control the |
| 2179 | visibility of windows created by child processes. See Win32 for |
| 2180 | details. |
| 2181 | .IP "\(bu" 8 |
| 2182 | Non-blocking waits for child processes (or pseudo\-processes) are |
| 2183 | supported via \f(CW\*(C`waitpid($pid, &POSIX::WNOHANG)\*(C'\fR. |
| 2184 | .IP "\(bu" 8 |
| 2185 | The behavior of \fIsystem()\fR with multiple arguments has been rationalized. |
| 2186 | Each unquoted argument will be automatically quoted to protect whitespace, |
| 2187 | and any existing whitespace in the arguments will be preserved. This |
| 2188 | improves the portability of system(@args) by avoiding the need for |
| 2189 | Windows \f(CW\*(C`cmd\*(C'\fR shell specific quoting in perl programs. |
| 2190 | .Sp |
| 2191 | Note that this means that some scripts that may have relied on earlier |
| 2192 | buggy behavior may no longer work correctly. For example, |
| 2193 | \&\f(CW\*(C`system("nmake /nologo", @args)\*(C'\fR will now attempt to run the file |
| 2194 | \&\f(CW\*(C`nmake /nologo\*(C'\fR and will fail when such a file isn't found. |
| 2195 | On the other hand, perl will now execute code such as |
| 2196 | \&\f(CW\*(C`system("c:/Program Files/MyApp/foo.exe", @args)\*(C'\fR correctly. |
| 2197 | .IP "\(bu" 8 |
| 2198 | The perl header files no longer suppress common warnings from the |
| 2199 | Microsoft Visual \*(C+ compiler. This means that additional warnings may |
| 2200 | now show up when compiling \s-1XS\s0 code. |
| 2201 | .IP "\(bu" 8 |
| 2202 | Borland \*(C+ v5.5 is now a supported compiler that can build Perl. |
| 2203 | However, the generated binaries continue to be incompatible with those |
| 2204 | generated by the other supported compilers (\s-1GCC\s0 and Visual \*(C+). [561] |
| 2205 | .IP "\(bu" 8 |
| 2206 | Duping socket handles with open(F, \*(L">&MYSOCK\*(R") now works under Windows 9x. |
| 2207 | [561] |
| 2208 | .IP "\(bu" 8 |
| 2209 | Current directory entries in \f(CW%ENV\fR are now correctly propagated to child |
| 2210 | processes. [561] |
| 2211 | .IP "\(bu" 8 |
| 2212 | New \f(CW%ENV\fR entries now propagate to subprocesses. [561] |
| 2213 | .IP "\(bu" 8 |
| 2214 | \&\fIWin32::GetCwd()\fR correctly returns C:\e instead of C: when at the drive root. |
| 2215 | Other bugs in \fIchdir()\fR and \fICwd::cwd()\fR have also been fixed. [561] |
| 2216 | .IP "\(bu" 8 |
| 2217 | The makefiles now default to the features enabled in ActiveState ActivePerl |
| 2218 | (a popular Win32 binary distribution). [561] |
| 2219 | .IP "\(bu" 8 |
| 2220 | \&\s-1HTML\s0 files will now be installed in c:\eperl\ehtml instead of |
| 2221 | c:\eperl\elib\epod\ehtml |
| 2222 | .IP "\(bu" 8 |
| 2223 | \&\s-1REG_EXPAND_SZ\s0 keys are now allowed in registry settings used by perl. [561] |
| 2224 | .IP "\(bu" 8 |
| 2225 | Can now \fIsend()\fR from all threads, not just the first one. [561] |
| 2226 | .IP "\(bu" 8 |
| 2227 | ExtUtils::MakeMaker now uses \f(CW$ENV\fR{\s-1LIB\s0} to search for libraries. [561] |
| 2228 | .IP "\(bu" 8 |
| 2229 | Less stack reserved per thread so that more threads can run |
| 2230 | concurrently. (Still 16M per thread.) [561] |
| 2231 | .IP "\(bu" 8 |
| 2232 | \&\f(CW\*(C`File::Spec\->tmpdir()\*(C'\fR now prefers C:/temp over /tmp |
| 2233 | (works better when perl is running as service). |
| 2234 | .IP "\(bu" 8 |
| 2235 | Better \s-1UNC\s0 path handling under ithreads. [561] |
| 2236 | .IP "\(bu" 8 |
| 2237 | \&\fIwait()\fR, \fIwaitpid()\fR, and backticks now return the correct exit status |
| 2238 | under Windows 9x. [561] |
| 2239 | .IP "\(bu" 8 |
| 2240 | A socket handle leak in \fIaccept()\fR has been fixed. [561] |
| 2241 | .RE |
| 2242 | .RS 4 |
| 2243 | .RE |
| 2244 | .SH "New or Changed Diagnostics" |
| 2245 | .IX Header "New or Changed Diagnostics" |
| 2246 | Please see perldiag for more details. |
| 2247 | .IP "\(bu" 4 |
| 2248 | Ambiguous range in the transliteration operator (like a\-z\-9) now |
| 2249 | gives a warning. |
| 2250 | .IP "\(bu" 4 |
| 2251 | chdir("") and chdir(undef) now give a deprecation warning because they |
| 2252 | cause a possible unintentional chdir to the home directory. |
| 2253 | Say \fIchdir()\fR if you really mean that. |
| 2254 | .IP "\(bu" 4 |
| 2255 | Two new debugging options have been added: if you have compiled your |
| 2256 | Perl with debugging, you can use the \-DT [561] and \-DR options to trace |
| 2257 | tokenising and to add reference counts to displaying variables, |
| 2258 | respectively. |
| 2259 | .IP "\(bu" 4 |
| 2260 | The lexical warnings category \*(L"deprecated\*(R" is no longer a sub-category |
| 2261 | of the \*(L"syntax\*(R" category. It is now a top-level category in its own |
| 2262 | right. |
| 2263 | .IP "\(bu" 4 |
| 2264 | Unadorned \fIdump()\fR will now give a warning suggesting to |
| 2265 | use explicit \fICORE::dump()\fR if that's what really is meant. |
| 2266 | .IP "\(bu" 4 |
| 2267 | The \*(L"Unrecognized escape\*(R" warning has been extended to include \f(CW\*(C`\e8\*(C'\fR, |
| 2268 | \&\f(CW\*(C`\e9\*(C'\fR, and \f(CW\*(C`\e_\*(C'\fR. There is no need to escape any of the \f(CW\*(C`\ew\*(C'\fR characters. |
| 2269 | .IP "\(bu" 4 |
| 2270 | All regular expression compilation error messages are now hopefully |
| 2271 | easier to understand both because the error message now comes before |
| 2272 | the failed regex and because the point of failure is now clearly |
| 2273 | marked by a \f(CW\*(C`<\-\- HERE\*(C'\fR marker. |
| 2274 | .IP "\(bu" 4 |
| 2275 | Various I/O (and socket) functions like \fIbinmode()\fR, \fIclose()\fR, and so |
| 2276 | forth now more consistently warn if they are used illogically either |
| 2277 | on a yet unopened or on an already closed filehandle (or socket). |
| 2278 | .IP "\(bu" 4 |
| 2279 | Using \fIlstat()\fR on a filehandle now gives a warning. (It's a non-sensical |
| 2280 | thing to do.) |
| 2281 | .IP "\(bu" 4 |
| 2282 | The \f(CW\*(C`\-M\*(C'\fR and \f(CW\*(C`\-m\*(C'\fR options now warn if you didn't supply the module name. |
| 2283 | .IP "\(bu" 4 |
| 2284 | If you in \f(CW\*(C`use\*(C'\fR specify a required minimum version, modules matching |
| 2285 | the name and but not defining a \f(CW$VERSION\fR will cause a fatal failure. |
| 2286 | .IP "\(bu" 4 |
| 2287 | Using negative offset for \fIvec()\fR in lvalue context is now a warnable offense. |
| 2288 | .IP "\(bu" 4 |
| 2289 | Odd number of arguments to overload::constant now elicits a warning. |
| 2290 | .IP "\(bu" 4 |
| 2291 | Odd number of elements in anonymous hash now elicits a warning. |
| 2292 | .IP "\(bu" 4 |
| 2293 | The various \*(L"opened only for\*(R", \*(L"on closed\*(R", \*(L"never opened\*(R" warnings |
| 2294 | drop the \f(CW\*(C`main::\*(C'\fR prefix for filehandles in the \f(CW\*(C`main\*(C'\fR package, |
| 2295 | for example \f(CW\*(C`STDIN\*(C'\fR instead of \f(CW\*(C`main::STDIN\*(C'\fR. |
| 2296 | .IP "\(bu" 4 |
| 2297 | Subroutine prototypes are now checked more carefully, you may |
| 2298 | get warnings for example if you have used non-prototype characters. |
| 2299 | .IP "\(bu" 4 |
| 2300 | If an attempt to use a (non\-blessed) reference as an array index |
| 2301 | is made, a warning is given. |
| 2302 | .IP "\(bu" 4 |
| 2303 | \&\f(CW\*(C`push @a;\*(C'\fR and \f(CW\*(C`unshift @a;\*(C'\fR (with no values to push or unshift) |
| 2304 | now give a warning. This may be a problem for generated and evaled |
| 2305 | code. |
| 2306 | .IP "\(bu" 4 |
| 2307 | If you try to \*(L"pack\*(R" in perlfunc a number less than 0 or larger than 255 |
| 2308 | using the \f(CW"C"\fR format you will get an optional warning. Similarly |
| 2309 | for the \f(CW"c"\fR format and a number less than \-128 or more than 127. |
| 2310 | .IP "\(bu" 4 |
| 2311 | pack \f(CW\*(C`P\*(C'\fR format now demands an explicit size. |
| 2312 | .IP "\(bu" 4 |
| 2313 | unpack \f(CW\*(C`w\*(C'\fR now warns of unterminated compressed integers. |
| 2314 | .IP "\(bu" 4 |
| 2315 | Warnings relating to the use of PerlIO have been added. |
| 2316 | .IP "\(bu" 4 |
| 2317 | Certain regex modifiers such as \f(CW\*(C`(?o)\*(C'\fR make sense only if applied to |
| 2318 | the entire regex. You will get an optional warning if you try to do |
| 2319 | otherwise. |
| 2320 | .IP "\(bu" 4 |
| 2321 | Variable length lookbehind has not yet been implemented, trying to |
| 2322 | use it will tell that. |
| 2323 | .IP "\(bu" 4 |
| 2324 | Using arrays or hashes as references (e.g. \f(CW\*(C`%foo\->{bar}\*(C'\fR |
| 2325 | has been deprecated for a while. Now you will get an optional warning. |
| 2326 | .IP "\(bu" 4 |
| 2327 | Warnings relating to the use of the new restricted hashes feature |
| 2328 | have been added. |
| 2329 | .IP "\(bu" 4 |
| 2330 | Self-ties of arrays and hashes are not supported and fatal errors |
| 2331 | will happen even at an attempt to do so. |
| 2332 | .IP "\(bu" 4 |
| 2333 | Using \f(CW\*(C`sort\*(C'\fR in scalar context now issues an optional warning. |
| 2334 | This didn't do anything useful, as the sort was not performed. |
| 2335 | .IP "\(bu" 4 |
| 2336 | Using the /g modifier in \fIsplit()\fR is meaningless and will cause a warning. |
| 2337 | .IP "\(bu" 4 |
| 2338 | Using \fIsplice()\fR past the end of an array now causes a warning. |
| 2339 | .IP "\(bu" 4 |
| 2340 | Malformed Unicode encodings (\s-1UTF\-8\s0 and \s-1UTF\-16\s0) cause a lot of warnings, |
| 2341 | as does trying to use \s-1UTF\-16\s0 surrogates (which are unimplemented). |
| 2342 | .IP "\(bu" 4 |
| 2343 | Trying to use Unicode characters on an I/O stream without marking the |
| 2344 | stream's encoding (using \fIopen()\fR or \fIbinmode()\fR) will cause \*(L"Wide character\*(R" |
| 2345 | warnings. |
| 2346 | .IP "\(bu" 4 |
| 2347 | Use of v\-strings in use/require causes a (backward) portability warning. |
| 2348 | .IP "\(bu" 4 |
| 2349 | Warnings relating to the use interpreter threads and their shared data |
| 2350 | have been added. |
| 2351 | .SH "Changed Internals" |
| 2352 | .IX Header "Changed Internals" |
| 2353 | .IP "\(bu" 4 |
| 2354 | PerlIO is now the default. |
| 2355 | .IP "\(bu" 4 |
| 2356 | perlapi.pod (a companion to perlguts) now attempts to document the |
| 2357 | internal \s-1API\s0. |
| 2358 | .IP "\(bu" 4 |
| 2359 | You can now build a really minimal perl called microperl. |
| 2360 | Building microperl does not require even running Configure; |
| 2361 | \&\f(CW\*(C`make \-f Makefile.micro\*(C'\fR should be enough. Beware: microperl makes |
| 2362 | many assumptions, some of which may be too bold; the resulting |
| 2363 | executable may crash or otherwise misbehave in wondrous ways. |
| 2364 | For careful hackers only. |
| 2365 | .IP "\(bu" 4 |
| 2366 | Added \fIrsignal()\fR, \fIwhichsig()\fR, \fIdo_join()\fR, op_clear, op_null, |
| 2367 | \&\fIptr_table_clear()\fR, \fIptr_table_free()\fR, \fIsv_setref_uv()\fR, and several \s-1UTF\-8\s0 |
| 2368 | interfaces to the publicised \s-1API\s0. For the full list of the available |
| 2369 | APIs see perlapi. |
| 2370 | .IP "\(bu" 4 |
| 2371 | Made possible to propagate customised exceptions via \fIcroak()\fRing. |
| 2372 | .IP "\(bu" 4 |
| 2373 | Now xsubs can have attributes just like subs. (Well, at least the |
| 2374 | built-in attributes.) |
| 2375 | .IP "\(bu" 4 |
| 2376 | dTHR and djSP have been obsoleted; the former removed (because it's |
| 2377 | a no\-op) and the latter replaced with dSP. |
| 2378 | .IP "\(bu" 4 |
| 2379 | \&\s-1PERL_OBJECT\s0 has been completely removed. |
| 2380 | .IP "\(bu" 4 |
| 2381 | The \s-1MAGIC\s0 constants (e.g. \f(CW'P'\fR) have been macrofied |
| 2382 | (e.g. \f(CW\*(C`PERL_MAGIC_TIED\*(C'\fR) for better source code readability |
| 2383 | and maintainability. |
| 2384 | .IP "\(bu" 4 |
| 2385 | The regex compiler now maintains a structure that identifies nodes in |
| 2386 | the compiled bytecode with the corresponding syntactic features of the |
| 2387 | original regex expression. The information is attached to the new |
| 2388 | \&\f(CW\*(C`offsets\*(C'\fR member of the \f(CW\*(C`struct regexp\*(C'\fR. See perldebguts for more |
| 2389 | complete information. |
| 2390 | .IP "\(bu" 4 |
| 2391 | The C code has been made much more \f(CW\*(C`gcc \-Wall\*(C'\fR clean. Some warning |
| 2392 | messages still remain in some platforms, so if you are compiling with |
| 2393 | gcc you may see some warnings about dubious practices. The warnings |
| 2394 | are being worked on. |
| 2395 | .IP "\(bu" 4 |
| 2396 | \&\fIperly.c\fR, \fIsv.c\fR, and \fIsv.h\fR have now been extensively commented. |
| 2397 | .IP "\(bu" 4 |
| 2398 | Documentation on how to use the Perl source repository has been added |
| 2399 | to \fIPorting/repository.pod\fR. |
| 2400 | .IP "\(bu" 4 |
| 2401 | There are now several profiling make targets. |
| 2402 | .SH "Security Vulnerability Closed [561]" |
| 2403 | .IX Header "Security Vulnerability Closed [561]" |
| 2404 | (This change was already made in 5.7.0 but bears repeating here.) |
| 2405 | (5.7.0 came out before 5.6.1: the development branch 5.7 released |
| 2406 | earlier than the maintenance branch 5.6) |
| 2407 | .PP |
| 2408 | A potential security vulnerability in the optional suidperl component |
| 2409 | of Perl was identified in August 2000. suidperl is neither built nor |
| 2410 | installed by default. As of November 2001 the only known vulnerable |
| 2411 | platform is Linux, most likely all Linux distributions. \s-1CERT\s0 and |
| 2412 | various vendors and distributors have been alerted about the vulnerability. |
| 2413 | See http://www.cpan.org/src/5.0/sperl\-2000\-08\-05/sperl\-2000\-08\-05.txt |
| 2414 | for more information. |
| 2415 | .PP |
| 2416 | The problem was caused by Perl trying to report a suspected security |
| 2417 | exploit attempt using an external program, /bin/mail. On Linux |
| 2418 | platforms the /bin/mail program had an undocumented feature which |
| 2419 | when combined with suidperl gave access to a root shell, resulting in |
| 2420 | a serious compromise instead of reporting the exploit attempt. If you |
| 2421 | don't have /bin/mail, or if you have 'safe setuid scripts', or if |
| 2422 | suidperl is not installed, you are safe. |
| 2423 | .PP |
| 2424 | The exploit attempt reporting feature has been completely removed from |
| 2425 | Perl 5.8.0 (and the maintenance release 5.6.1, and it was removed also |
| 2426 | from all the Perl 5.7 releases), so that particular vulnerability |
| 2427 | isn't there anymore. However, further security vulnerabilities are, |
| 2428 | unfortunately, always possible. The suidperl functionality is most |
| 2429 | probably going to be removed in Perl 5.10. In any case, suidperl |
| 2430 | should only be used by security experts who know exactly what they are |
| 2431 | doing and why they are using suidperl instead of some other solution |
| 2432 | such as sudo ( see http://www.courtesan.com/sudo/ ). |
| 2433 | .SH "New Tests" |
| 2434 | .IX Header "New Tests" |
| 2435 | Several new tests have been added, especially for the \fIlib\fR and |
| 2436 | \&\fIext\fR subsections. There are now about 69 000 individual tests |
| 2437 | (spread over about 700 test scripts), in the regression suite (5.6.1 |
| 2438 | has about 11 700 tests, in 258 test scripts) The exact numbers depend |
| 2439 | on the platform and Perl configuration used. Many of the new tests |
| 2440 | are of course introduced by the new modules, but still in general Perl |
| 2441 | is now more thoroughly tested. |
| 2442 | .PP |
| 2443 | Because of the large number of tests, running the regression suite |
| 2444 | will take considerably longer time than it used to: expect the suite |
| 2445 | to take up to 4\-5 times longer to run than in perl 5.6. On a really |
| 2446 | fast machine you can hope to finish the suite in about 6\-8 minutes |
| 2447 | (wallclock time). |
| 2448 | .PP |
| 2449 | The tests are now reported in a different order than in earlier Perls. |
| 2450 | (This happens because the test scripts from under t/lib have been moved |
| 2451 | to be closer to the library/extension they are testing.) |
| 2452 | .SH "Known Problems" |
| 2453 | .IX Header "Known Problems" |
| 2454 | .Sh "The Compiler Suite Is Still Very Experimental" |
| 2455 | .IX Subsection "The Compiler Suite Is Still Very Experimental" |
| 2456 | The compiler suite is slowly getting better but it continues to be |
| 2457 | highly experimental. Use in production environments is discouraged. |
| 2458 | .Sh "Localising Tied Arrays and Hashes Is Broken" |
| 2459 | .IX Subsection "Localising Tied Arrays and Hashes Is Broken" |
| 2460 | .Vb 1 |
| 2461 | \& local %tied_array; |
| 2462 | .Ve |
| 2463 | .PP |
| 2464 | doesn't work as one would expect: the old value is restored |
| 2465 | incorrectly. This will be changed in a future release, but we don't |
| 2466 | know yet what the new semantics will exactly be. In any case, the |
| 2467 | change will break existing code that relies on the current |
| 2468 | (ill\-defined) semantics, so just avoid doing this in general. |
| 2469 | .Sh "Building Extensions Can Fail Because Of Largefiles" |
| 2470 | .IX Subsection "Building Extensions Can Fail Because Of Largefiles" |
| 2471 | Some extensions like mod_perl are known to have issues with |
| 2472 | `largefiles', a change brought by Perl 5.6.0 in which file offsets |
| 2473 | default to 64 bits wide, where supported. Modules may fail to compile |
| 2474 | at all, or they may compile and work incorrectly. Currently, there |
| 2475 | is no good solution for the problem, but Configure now provides |
| 2476 | appropriate non-largefile ccflags, ldflags, libswanted, and libs |
| 2477 | in the \f(CW%Config\fR hash (e.g., \f(CW$Config\fR{ccflags_nolargefiles}) so the |
| 2478 | extensions that are having problems can try configuring themselves |
| 2479 | without the largefileness. This is admittedly not a clean solution, |
| 2480 | and the solution may not even work at all. One potential failure is |
| 2481 | whether one can (or, if one can, whether it's a good idea to) link |
| 2482 | together at all binaries with different ideas about file offsets; |
| 2483 | all this is platform\-dependent. |
| 2484 | .ie n .Sh "Modifying $_ Inside for(..)" |
| 2485 | .el .Sh "Modifying \f(CW$_\fP Inside for(..)" |
| 2486 | .IX Subsection "Modifying $_ Inside for(..)" |
| 2487 | .Vb 1 |
| 2488 | \& for (1..5) { $_++ } |
| 2489 | .Ve |
| 2490 | .PP |
| 2491 | works without complaint. It shouldn't. (You should be able to |
| 2492 | modify only lvalue elements inside the loops.) You can see the |
| 2493 | correct behaviour by replacing the 1..5 with 1, 2, 3, 4, 5. |
| 2494 | .Sh "mod_perl 1.26 Doesn't Build With Threaded Perl" |
| 2495 | .IX Subsection "mod_perl 1.26 Doesn't Build With Threaded Perl" |
| 2496 | Use mod_perl 1.27 or higher. |
| 2497 | .Sh "lib/ftmp\-security tests warn 'system possibly insecure'" |
| 2498 | .IX Subsection "lib/ftmp-security tests warn 'system possibly insecure'" |
| 2499 | Don't panic. Read the 'make test' section of \s-1INSTALL\s0 instead. |
| 2500 | .Sh "libwww-perl (\s-1LWP\s0) fails base/date #51" |
| 2501 | .IX Subsection "libwww-perl (LWP) fails base/date #51" |
| 2502 | Use libwww-perl 5.65 or later. |
| 2503 | .Sh "\s-1PDL\s0 failing some tests" |
| 2504 | .IX Subsection "PDL failing some tests" |
| 2505 | Use \s-1PDL\s0 2.3.4 or later. |
| 2506 | .Sh "Perl_get_sv" |
| 2507 | .IX Subsection "Perl_get_sv" |
| 2508 | You may get errors like 'Undefined symbol \*(L"Perl_get_sv\*(R"' or \*(L"can't |
| 2509 | resolve symbol 'Perl_get_sv'\*(R", or the symbol may be \*(L"Perl_sv_2pv\*(R". |
| 2510 | This probably means that you are trying to use an older shared Perl |
| 2511 | library (or extensions linked with such) with Perl 5.8.0 executable. |
| 2512 | Perl used to have such a subroutine, but that is no more the case. |
| 2513 | Check your shared library path, and any shared Perl libraries in those |
| 2514 | directories. |
| 2515 | .PP |
| 2516 | Sometimes this problem may also indicate a partial Perl 5.8.0 |
| 2517 | installation, see \*(L"Mac \s-1OS\s0 X dyld undefined symbols\*(R" for an |
| 2518 | example and how to deal with it. |
| 2519 | .Sh "Self-tying Problems" |
| 2520 | .IX Subsection "Self-tying Problems" |
| 2521 | Self-tying of arrays and hashes is broken in rather deep and |
| 2522 | hard-to-fix ways. As a stop-gap measure to avoid people from getting |
| 2523 | frustrated at the mysterious results (core dumps, most often), it is |
| 2524 | forbidden for now (you will get a fatal error even from an attempt). |
| 2525 | .PP |
| 2526 | A change to self-tying of globs has caused them to be recursively |
| 2527 | referenced (see: \*(L"Two\-Phased Garbage Collection\*(R" in perlobj). You |
| 2528 | will now need an explicit untie to destroy a self-tied glob. This |
| 2529 | behaviour may be fixed at a later date. |
| 2530 | .PP |
| 2531 | Self-tying of scalars and \s-1IO\s0 thingies works. |
| 2532 | .Sh "ext/threads/t/libc" |
| 2533 | .IX Subsection "ext/threads/t/libc" |
| 2534 | If this test fails, it indicates that your libc (C library) is not |
| 2535 | threadsafe. This particular test stress tests the \fIlocaltime()\fR call to |
| 2536 | find out whether it is threadsafe. See perlthrtut for more information. |
| 2537 | .Sh "Failure of Thread (5.005\-style) tests" |
| 2538 | .IX Subsection "Failure of Thread (5.005-style) tests" |
| 2539 | \&\fBNote that support for 5.005\-style threading is deprecated, |
| 2540 | experimental and practically unsupported. In 5.10, it is expected |
| 2541 | to be removed. You should migrate your code to ithreads.\fR |
| 2542 | .PP |
| 2543 | The following tests are known to fail due to fundamental problems in |
| 2544 | the 5.005 threading implementation. These are not new failures\*(--Perl |
| 2545 | 5.005_0x has the same bugs, but didn't have these tests. |
| 2546 | .PP |
| 2547 | .Vb 14 |
| 2548 | \& ../ext/B/t/xref.t 255 65280 14 12 85.71% 3-14 |
| 2549 | \& ../ext/List/Util/t/first.t 255 65280 7 4 57.14% 2 5-7 |
| 2550 | \& ../lib/English.t 2 512 54 2 3.70% 2-3 |
| 2551 | \& ../lib/FileCache.t 5 1 20.00% 5 |
| 2552 | \& ../lib/Filter/Simple/t/data.t 6 3 50.00% 1-3 |
| 2553 | \& ../lib/Filter/Simple/t/filter_only. 9 3 33.33% 1-2 5 |
| 2554 | \& ../lib/Math/BigInt/t/bare_mbf.t 1627 4 0.25% 8 11 1626-1627 |
| 2555 | \& ../lib/Math/BigInt/t/bigfltpm.t 1629 4 0.25% 10 13 1628- |
| 2556 | \& 1629 |
| 2557 | \& ../lib/Math/BigInt/t/sub_mbf.t 1633 4 0.24% 8 11 1632-1633 |
| 2558 | \& ../lib/Math/BigInt/t/with_sub.t 1628 4 0.25% 9 12 1627-1628 |
| 2559 | \& ../lib/Tie/File/t/31_autodefer.t 255 65280 65 32 49.23% 34-65 |
| 2560 | \& ../lib/autouse.t 10 1 10.00% 4 |
| 2561 | \& op/flip.t 15 1 6.67% 15 |
| 2562 | .Ve |
| 2563 | .PP |
| 2564 | These failures are unlikely to get fixed as 5.005\-style threads |
| 2565 | are considered fundamentally broken. (Basically what happens is that |
| 2566 | competing threads can corrupt shared global state, one good example |
| 2567 | being regular expression engine's state.) |
| 2568 | .Sh "Timing problems" |
| 2569 | .IX Subsection "Timing problems" |
| 2570 | The following tests may fail intermittently because of timing |
| 2571 | problems, for example if the system is heavily loaded. |
| 2572 | .PP |
| 2573 | .Vb 5 |
| 2574 | \& t/op/alarm.t |
| 2575 | \& ext/Time/HiRes/HiRes.t |
| 2576 | \& lib/Benchmark.t |
| 2577 | \& lib/Memoize/t/expmod_t.t |
| 2578 | \& lib/Memoize/t/speed.t |
| 2579 | .Ve |
| 2580 | .PP |
| 2581 | In case of failure please try running them manually, for example |
| 2582 | .PP |
| 2583 | .Vb 1 |
| 2584 | \& ./perl -Ilib ext/Time/HiRes/HiRes.t |
| 2585 | .Ve |
| 2586 | .Sh "Tied/Magical Array/Hash Elements Do Not Autovivify" |
| 2587 | .IX Subsection "Tied/Magical Array/Hash Elements Do Not Autovivify" |
| 2588 | For normal arrays \f(CW\*(C`$foo = \e$bar[1]\*(C'\fR will assign \f(CW\*(C`undef\*(C'\fR to |
| 2589 | \&\f(CW$bar[1]\fR (assuming that it didn't exist before), but for |
| 2590 | tied/magical arrays and hashes such autovivification does not happen |
| 2591 | because there is currently no way to catch the reference creation. |
| 2592 | The same problem affects slicing over non-existent indices/keys of |
| 2593 | a tied/magical array/hash. |
| 2594 | .Sh "Unicode in package/class and subroutine names does not work" |
| 2595 | .IX Subsection "Unicode in package/class and subroutine names does not work" |
| 2596 | One can have Unicode in identifier names, but not in package/class or |
| 2597 | subroutine names. While some limited functionality towards this does |
| 2598 | exist as of Perl 5.8.0, that is more accidental than designed; use of |
| 2599 | Unicode for the said purposes is unsupported. |
| 2600 | .PP |
| 2601 | One reason of this unfinishedness is its (currently) inherent |
| 2602 | unportability: since both package names and subroutine names may |
| 2603 | need to be mapped to file and directory names, the Unicode capability |
| 2604 | of the filesystem becomes important\*(-- and there unfortunately aren't |
| 2605 | portable answers. |
| 2606 | .SH "Platform Specific Problems" |
| 2607 | .IX Header "Platform Specific Problems" |
| 2608 | .Sh "\s-1AIX\s0" |
| 2609 | .IX Subsection "AIX" |
| 2610 | .IP "\(bu" 4 |
| 2611 | If using the \s-1AIX\s0 native make command, instead of just \*(L"make\*(R" issue |
| 2612 | \&\*(L"make all\*(R". In some setups the former has been known to spuriously |
| 2613 | also try to run \*(L"make install\*(R". Alternatively, you may want to use |
| 2614 | \&\s-1GNU\s0 make. |
| 2615 | .IP "\(bu" 4 |
| 2616 | In \s-1AIX\s0 4.2, Perl extensions that use \*(C+ functions that use statics |
| 2617 | may have problems in that the statics are not getting initialized. |
| 2618 | In newer \s-1AIX\s0 releases, this has been solved by linking Perl with |
| 2619 | the libC_r library, but unfortunately in \s-1AIX\s0 4.2 the said library |
| 2620 | has an obscure bug where the various functions related to time |
| 2621 | (such as \fItime()\fR and \fIgettimeofday()\fR) return broken values, and |
| 2622 | therefore in \s-1AIX\s0 4.2 Perl is not linked against libC_r. |
| 2623 | .IP "\(bu" 4 |
| 2624 | vac 5.0.0.0 May Produce Buggy Code For Perl |
| 2625 | .Sp |
| 2626 | The \s-1AIX\s0 C compiler vac version 5.0.0.0 may produce buggy code, |
| 2627 | resulting in a few random tests failing when run as part of \*(L"make |
| 2628 | test\*(R", but when the failing tests are run by hand, they succeed. |
| 2629 | We suggest upgrading to at least vac version 5.0.1.0, that has been |
| 2630 | known to compile Perl correctly. \*(L"lslpp \-L|grep vac.C\*(R" will tell |
| 2631 | you the vac version. See \s-1README\s0.aix. |
| 2632 | .IP "\(bu" 4 |
| 2633 | If building threaded Perl, you may get compilation warning from pp_sys.c: |
| 2634 | .Sp |
| 2635 | .Vb 1 |
| 2636 | \& "pp_sys.c", line 4651.39: 1506-280 (W) Function argument assignment between types "unsigned char*" and "const void*" is not allowed. |
| 2637 | .Ve |
| 2638 | .Sp |
| 2639 | This is harmless; it is caused by the \fIgetnetbyaddr()\fR and \fIgetnetbyaddr_r()\fR |
| 2640 | having slightly different types for their first argument. |
| 2641 | .Sh "Alpha systems with old gccs fail several tests" |
| 2642 | .IX Subsection "Alpha systems with old gccs fail several tests" |
| 2643 | If you see op/pack, op/pat, op/regexp, or ext/Storable tests failing |
| 2644 | in a Linux/alpha or *BSD/Alpha, it's probably time to upgrade your gcc. |
| 2645 | gccs prior to 2.95.3 are definitely not good enough, and gcc 3.1 may |
| 2646 | be even better. (RedHat Linux/alpha with gcc 3.1 reported no problems, |
| 2647 | as did Linux 2.4.18 with gcc 2.95.4.) (In Tru64, it is preferable to |
| 2648 | use the bundled C compiler.) |
| 2649 | .Sh "AmigaOS" |
| 2650 | .IX Subsection "AmigaOS" |
| 2651 | Perl 5.8.0 doesn't build in AmigaOS. It broke at some point during |
| 2652 | the ithreads work and we could not find Amiga experts to unbreak the |
| 2653 | problems. Perl 5.6.1 still works for AmigaOS (as does the 5.7.2 |
| 2654 | development release). |
| 2655 | .Sh "BeOS" |
| 2656 | .IX Subsection "BeOS" |
| 2657 | The following tests fail on 5.8.0 Perl in BeOS Personal 5.03: |
| 2658 | .PP |
| 2659 | .Vb 6 |
| 2660 | \& t/op/lfs............................FAILED at test 17 |
| 2661 | \& t/op/magic..........................FAILED at test 24 |
| 2662 | \& ext/Fcntl/t/syslfs..................FAILED at test 17 |
| 2663 | \& ext/File/Glob/t/basic...............FAILED at test 3 |
| 2664 | \& ext/POSIX/t/sigaction...............FAILED at test 13 |
| 2665 | \& ext/POSIX/t/waitpid.................FAILED at test 1 |
| 2666 | .Ve |
| 2667 | .PP |
| 2668 | See perlbeos (\s-1README\s0.beos) for more details. |
| 2669 | .ie n .Sh "Cygwin ""unable to remap""" |
| 2670 | .el .Sh "Cygwin ``unable to remap''" |
| 2671 | .IX Subsection "Cygwin unable to remap" |
| 2672 | For example when building the Tk extension for Cygwin, |
| 2673 | you may get an error message saying \*(L"unable to remap\*(R". |
| 2674 | This is known problem with Cygwin, and a workaround is |
| 2675 | detailed in here: http://sources.redhat.com/ml/cygwin/2001\-12/msg00894.html |
| 2676 | .Sh "Cygwin ndbm tests fail on \s-1FAT\s0" |
| 2677 | .IX Subsection "Cygwin ndbm tests fail on FAT" |
| 2678 | One can build but not install (or test the build of) the NDBM_File |
| 2679 | on \s-1FAT\s0 filesystems. Installation (or build) on \s-1NTFS\s0 works fine. |
| 2680 | If one attempts the test on a \s-1FAT\s0 install (or build) the following |
| 2681 | failures are expected: |
| 2682 | .PP |
| 2683 | .Vb 6 |
| 2684 | \& ../ext/NDBM_File/ndbm.t 13 3328 71 59 83.10% 1-2 4 16-71 |
| 2685 | \& ../ext/ODBM_File/odbm.t 255 65280 ?? ?? % ?? |
| 2686 | \& ../lib/AnyDBM_File.t 2 512 12 2 16.67% 1 4 |
| 2687 | \& ../lib/Memoize/t/errors.t 0 139 11 5 45.45% 7-11 |
| 2688 | \& ../lib/Memoize/t/tie_ndbm.t 13 3328 4 4 100.00% 1-4 |
| 2689 | \& run/fresh_perl.t 97 1 1.03% 91 |
| 2690 | .Ve |
| 2691 | .PP |
| 2692 | NDBM_File fails and ODBM_File just coredumps. |
| 2693 | .PP |
| 2694 | If you intend to run only on \s-1FAT\s0 (or if using AnyDBM_File on \s-1FAT\s0), |
| 2695 | run Configure with the \-Ui_ndbm and \-Ui_dbm options to prevent |
| 2696 | NDBM_File and ODBM_File being built. |
| 2697 | .Sh "\s-1DJGPP\s0 Failures" |
| 2698 | .IX Subsection "DJGPP Failures" |
| 2699 | .Vb 8 |
| 2700 | \& t/op/stat............................FAILED at test 29 |
| 2701 | \& lib/File/Find/t/find.................FAILED at test 1 |
| 2702 | \& lib/File/Find/t/taint................FAILED at test 1 |
| 2703 | \& lib/h2xs.............................FAILED at test 15 |
| 2704 | \& lib/Pod/t/eol........................FAILED at test 1 |
| 2705 | \& lib/Test/Harness/t/strap-analyze.....FAILED at test 8 |
| 2706 | \& lib/Test/Harness/t/test-harness......FAILED at test 23 |
| 2707 | \& lib/Test/Simple/t/exit...............FAILED at test 1 |
| 2708 | .Ve |
| 2709 | .PP |
| 2710 | The above failures are known as of 5.8.0 with native builds with long |
| 2711 | filenames, but there are a few more if running under dosemu because of |
| 2712 | limitations (and maybe bugs) of dosemu: |
| 2713 | .PP |
| 2714 | .Vb 2 |
| 2715 | \& t/comp/cpp...........................FAILED at test 3 |
| 2716 | \& t/op/inccode.........................(crash) |
| 2717 | .Ve |
| 2718 | .PP |
| 2719 | and a few lib/ExtUtils tests, and several hundred Encode/t/Aliases.t |
| 2720 | failures that work fine with long filenames. So you really might |
| 2721 | prefer native builds and long filenames. |
| 2722 | .Sh "FreeBSD built with ithreads coredumps reading large directories" |
| 2723 | .IX Subsection "FreeBSD built with ithreads coredumps reading large directories" |
| 2724 | This is a known bug in FreeBSD 4.5's \fIreaddir_r()\fR, it has been fixed in |
| 2725 | FreeBSD 4.6 (see perlfreebsd (\s-1README\s0.freebsd)). |
| 2726 | .Sh "FreeBSD Failing locale Test 117 For \s-1ISO\s0 8859\-15 Locales" |
| 2727 | .IX Subsection "FreeBSD Failing locale Test 117 For ISO 8859-15 Locales" |
| 2728 | The \s-1ISO\s0 8859\-15 locales may fail the locale test 117 in FreeBSD. |
| 2729 | This is caused by the characters \exFF (y with diaeresis) and \exBE |
| 2730 | (Y with diaeresis) not behaving correctly when being matched |
| 2731 | case\-insensitively. Apparently this problem has been fixed in |
| 2732 | the latest FreeBSD releases. |
| 2733 | ( http://www.freebsd.org/cgi/query\-pr.cgi?pr=34308 ) |
| 2734 | .Sh "\s-1IRIX\s0 fails ext/List/Util/t/shuffle.t or Digest::MD5" |
| 2735 | .IX Subsection "IRIX fails ext/List/Util/t/shuffle.t or Digest::MD5" |
| 2736 | \&\s-1IRIX\s0 with MIPSpro 7.3.1.2m or 7.3.1.3m compiler may fail the List::Util |
| 2737 | test ext/List/Util/t/shuffle.t by dumping core. This seems to be |
| 2738 | a compiler error since if compiled with gcc no core dump ensues, and |
| 2739 | no failures have been seen on the said test on any other platform. |
| 2740 | .PP |
| 2741 | Similarly, building the Digest::MD5 extension has been |
| 2742 | known to fail with \*(L"*** Termination code 139 (bu21)\*(R". |
| 2743 | .PP |
| 2744 | The cure is to drop optimization level (Configure \-Doptimize=\-O2). |
| 2745 | .Sh "HP-UX lib/posix Subtest 9 Fails When LP64\-Configured" |
| 2746 | .IX Subsection "HP-UX lib/posix Subtest 9 Fails When LP64-Configured" |
| 2747 | If perl is configured with \-Duse64bitall, the successful result of the |
| 2748 | subtest 10 of lib/posix may arrive before the successful result of the |
| 2749 | subtest 9, which confuses the test harness so much that it thinks the |
| 2750 | subtest 9 failed. |
| 2751 | .Sh "Linux with glibc 2.2.5 fails t/op/int subtest #6 with \-Duse64bitint" |
| 2752 | .IX Subsection "Linux with glibc 2.2.5 fails t/op/int subtest #6 with -Duse64bitint" |
| 2753 | This is a known bug in the glibc 2.2.5 with long long integers. |
| 2754 | ( http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=65612 ) |
| 2755 | .Sh "Linux With Sfio Fails op/misc Test 48" |
| 2756 | .IX Subsection "Linux With Sfio Fails op/misc Test 48" |
| 2757 | No known fix. |
| 2758 | .Sh "Mac \s-1OS\s0 X" |
| 2759 | .IX Subsection "Mac OS X" |
| 2760 | Please remember to set your environment variable \s-1LC_ALL\s0 to \*(L"C\*(R" |
| 2761 | (setenv \s-1LC_ALL\s0 C) before running \*(L"make test\*(R" to avoid a lot of |
| 2762 | warnings about the broken locales of Mac \s-1OS\s0 X. |
| 2763 | .PP |
| 2764 | The following tests are known to fail in Mac \s-1OS\s0 X 10.1.5 because of |
| 2765 | buggy (old) implementations of Berkeley \s-1DB\s0 included in Mac \s-1OS\s0 X: |
| 2766 | .PP |
| 2767 | .Vb 4 |
| 2768 | \& Failed Test Stat Wstat Total Fail Failed List of Failed |
| 2769 | \& ------------------------------------------------------------------------- |
| 2770 | \& ../ext/DB_File/t/db-btree.t 0 11 ?? ?? % ?? |
| 2771 | \& ../ext/DB_File/t/db-recno.t 149 3 2.01% 61 63 65 |
| 2772 | .Ve |
| 2773 | .PP |
| 2774 | If you are building on a \s-1UFS\s0 partition, you will also probably see |
| 2775 | t/op/stat.t subtest #9 fail. This is caused by Darwin's \s-1UFS\s0 not |
| 2776 | supporting inode change time. |
| 2777 | .PP |
| 2778 | Also the ext/POSIX/t/posix.t subtest #10 fails but it is skipped for |
| 2779 | now because the failure is Apple's fault, not Perl's (blocked signals |
| 2780 | are lost). |
| 2781 | .PP |
| 2782 | If you Configure with ithreads, ext/threads/t/libc.t will fail. Again, |
| 2783 | this is not Perl's fault\*(-- the libc of Mac \s-1OS\s0 X is not threadsafe |
| 2784 | (in this particular test, the \fIlocaltime()\fR call is found to be |
| 2785 | threadunsafe.) |
| 2786 | .Sh "Mac \s-1OS\s0 X dyld undefined symbols" |
| 2787 | .IX Subsection "Mac OS X dyld undefined symbols" |
| 2788 | If after installing Perl 5.8.0 you are getting warnings about missing |
| 2789 | symbols, for example |
| 2790 | .PP |
| 2791 | .Vb 3 |
| 2792 | \& dyld: perl Undefined symbols |
| 2793 | \& _perl_sv_2pv |
| 2794 | \& _perl_get_sv |
| 2795 | .Ve |
| 2796 | .PP |
| 2797 | you probably have an old pre\-Perl\-5.8.0 installation (or parts of one) |
| 2798 | in /Library/Perl (the undefined symbols used to exist in pre\-5.8.0 Perls). |
| 2799 | It seems that for some reason \*(L"make install\*(R" doesn't always completely |
| 2800 | overwrite the files in /Library/Perl. You can move the old Perl |
| 2801 | shared library out of the way like this: |
| 2802 | .PP |
| 2803 | .Vb 2 |
| 2804 | \& cd /Library/Perl/darwin/CORE |
| 2805 | \& mv libperl.dylib libperlold.dylib |
| 2806 | .Ve |
| 2807 | .PP |
| 2808 | and then reissue \*(L"make install\*(R". Note that the above of course is |
| 2809 | extremely disruptive for anything using the /usr/local/bin/perl. |
| 2810 | If that doesn't help, you may have to try removing all the .bundle |
| 2811 | files from beneath /Library/Perl, and again \*(L"make install\*(R"\-ing. |
| 2812 | .Sh "\s-1OS/2\s0 Test Failures" |
| 2813 | .IX Subsection "OS/2 Test Failures" |
| 2814 | The following tests are known to fail on \s-1OS/2\s0 (for clarity |
| 2815 | only the failures are shown, not the full error messages): |
| 2816 | .PP |
| 2817 | .Vb 6 |
| 2818 | \& ../lib/ExtUtils/t/Mkbootstrap.t 1 256 18 1 5.56% 8 |
| 2819 | \& ../lib/ExtUtils/t/Packlist.t 1 256 34 1 2.94% 17 |
| 2820 | \& ../lib/ExtUtils/t/basic.t 1 256 17 1 5.88% 14 |
| 2821 | \& lib/os2_process.t 2 512 227 2 0.88% 174 209 |
| 2822 | \& lib/os2_process_kid.t 227 2 0.88% 174 209 |
| 2823 | \& lib/rx_cmprt.t 255 65280 18 3 16.67% 16-18 |
| 2824 | .Ve |
| 2825 | .Sh "op/sprintf tests 91, 129, and 130" |
| 2826 | .IX Subsection "op/sprintf tests 91, 129, and 130" |
| 2827 | The op/sprintf tests 91, 129, and 130 are known to fail on some platforms. |
| 2828 | Examples include any platform using sfio, and Compaq/Tandem's NonStop\-UX. |
| 2829 | .PP |
| 2830 | Test 91 is known to fail on \s-1QNX6\s0 (nto), because \f(CW\*(C`sprintf '%e',0\*(C'\fR |
| 2831 | incorrectly produces \f(CW0.000000e+0\fR instead of \f(CW0.000000e+00\fR. |
| 2832 | .PP |
| 2833 | For tests 129 and 130, the failing platforms do not comply with |
| 2834 | the \s-1ANSI\s0 C Standard: lines 19ff on page 134 of \s-1ANSI\s0 X3.159 1989, to |
| 2835 | be exact. (They produce something other than \*(L"1\*(R" and \*(L"\-1\*(R" when |
| 2836 | formatting 0.6 and \-0.6 using the printf format \*(L"%.0f\*(R"; most often, |
| 2837 | they produce \*(L"0\*(R" and \*(L"\-0\*(R".) |
| 2838 | .Sh "\s-1SCO\s0" |
| 2839 | .IX Subsection "SCO" |
| 2840 | The socketpair tests are known to be unhappy in \s-1SCO\s0 3.2v5.0.4: |
| 2841 | .PP |
| 2842 | .Vb 1 |
| 2843 | \& ext/Socket/socketpair.t...............FAILED tests 15-45 |
| 2844 | .Ve |
| 2845 | .Sh "Solaris 2.5" |
| 2846 | .IX Subsection "Solaris 2.5" |
| 2847 | In case you are still using Solaris 2.5 (aka SunOS 5.5), you may |
| 2848 | experience failures (the test core dumping) in lib/locale.t. |
| 2849 | The suggested cure is to upgrade your Solaris. |
| 2850 | .Sh "Solaris x86 Fails Tests With \-Duse64bitint" |
| 2851 | .IX Subsection "Solaris x86 Fails Tests With -Duse64bitint" |
| 2852 | The following tests are known to fail in Solaris x86 with Perl |
| 2853 | configured to use 64 bit integers: |
| 2854 | .PP |
| 2855 | .Vb 2 |
| 2856 | \& ext/Data/Dumper/t/dumper.............FAILED at test 268 |
| 2857 | \& ext/Devel/Peek/Peek..................FAILED at test 7 |
| 2858 | .Ve |
| 2859 | .Sh "SUPER-UX (\s-1NEC\s0 \s-1SX\s0)" |
| 2860 | .IX Subsection "SUPER-UX (NEC SX)" |
| 2861 | The following tests are known to fail on \s-1SUPER\-UX:\s0 |
| 2862 | .PP |
| 2863 | .Vb 11 |
| 2864 | \& op/64bitint...........................FAILED tests 29-30, 32-33, 35-36 |
| 2865 | \& op/arith..............................FAILED tests 128-130 |
| 2866 | \& op/pack...............................FAILED tests 25-5625 |
| 2867 | \& op/pow................................ |
| 2868 | \& op/taint..............................# msgsnd failed |
| 2869 | \& ../ext/IO/lib/IO/t/io_poll............FAILED tests 3-4 |
| 2870 | \& ../ext/IPC/SysV/ipcsysv...............FAILED tests 2, 5-6 |
| 2871 | \& ../ext/IPC/SysV/t/msg.................FAILED tests 2, 4-6 |
| 2872 | \& ../ext/Socket/socketpair..............FAILED tests 12 |
| 2873 | \& ../lib/IPC/SysV.......................FAILED tests 2, 5-6 |
| 2874 | \& ../lib/warnings.......................FAILED tests 115-116, 118-119 |
| 2875 | .Ve |
| 2876 | .PP |
| 2877 | The op/pack failure (\*(L"Cannot compress negative numbers at op/pack.t line 126\*(R") |
| 2878 | is serious but as of yet unsolved. It points at some problems with the |
| 2879 | signedness handling of the C compiler, as do the 64bitint, arith, and pow |
| 2880 | failures. Most of the rest point at problems with SysV \s-1IPC\s0. |
| 2881 | .Sh "Term::ReadKey not working on Win32" |
| 2882 | .IX Subsection "Term::ReadKey not working on Win32" |
| 2883 | Use Term::ReadKey 2.20 or later. |
| 2884 | .Sh "UNICOS/mk" |
| 2885 | .IX Subsection "UNICOS/mk" |
| 2886 | .IP "\(bu" 4 |
| 2887 | During Configure, the test |
| 2888 | .Sp |
| 2889 | .Vb 1 |
| 2890 | \& Guessing which symbols your C compiler and preprocessor define... |
| 2891 | .Ve |
| 2892 | .Sp |
| 2893 | will probably fail with error messages like |
| 2894 | .Sp |
| 2895 | .Vb 2 |
| 2896 | \& CC-20 cc: ERROR File = try.c, Line = 3 |
| 2897 | \& The identifier "bad" is undefined. |
| 2898 | .Ve |
| 2899 | .Sp |
| 2900 | .Vb 2 |
| 2901 | \& bad switch yylook 79bad switch yylook 79bad switch yylook 79bad switch yylook 79#ifdef A29K |
| 2902 | \& ^ |
| 2903 | .Ve |
| 2904 | .Sp |
| 2905 | .Vb 2 |
| 2906 | \& CC-65 cc: ERROR File = try.c, Line = 3 |
| 2907 | \& A semicolon is expected at this point. |
| 2908 | .Ve |
| 2909 | .Sp |
| 2910 | This is caused by a bug in the awk utility of UNICOS/mk. You can ignore |
| 2911 | the error, but it does cause a slight problem: you cannot fully |
| 2912 | benefit from the h2ph utility (see h2ph) that can be used to |
| 2913 | convert C headers to Perl libraries, mainly used to be able to access |
| 2914 | from Perl the constants defined using C preprocessor, cpp. Because of |
| 2915 | the above error, parts of the converted headers will be invisible. |
| 2916 | Luckily, these days the need for h2ph is rare. |
| 2917 | .IP "\(bu" 4 |
| 2918 | If building Perl with interpreter threads (ithreads), the |
| 2919 | \&\fIgetgrent()\fR, \fIgetgrnam()\fR, and \fIgetgrgid()\fR functions cannot return the |
| 2920 | list of the group members due to a bug in the multithreaded support of |
| 2921 | UNICOS/mk. What this means is that in list context the functions will |
| 2922 | return only three values, not four. |
| 2923 | .Sh "\s-1UTS\s0" |
| 2924 | .IX Subsection "UTS" |
| 2925 | There are a few known test failures, see perluts (\s-1README\s0.uts). |
| 2926 | .Sh "\s-1VOS\s0 (Stratus)" |
| 2927 | .IX Subsection "VOS (Stratus)" |
| 2928 | When Perl is built using the native build process on \s-1VOS\s0 Release |
| 2929 | 14.5.0 and \s-1GNU\s0 \*(C+/GNU Tools 2.0.1, all attempted tests either |
| 2930 | pass or result in \s-1TODO\s0 (ignored) failures. |
| 2931 | .Sh "\s-1VMS\s0" |
| 2932 | .IX Subsection "VMS" |
| 2933 | There should be no reported test failures with a default configuration, |
| 2934 | though there are a number of tests marked \s-1TODO\s0 that point to areas |
| 2935 | needing further debugging and/or porting work. |
| 2936 | .Sh "Win32" |
| 2937 | .IX Subsection "Win32" |
| 2938 | In multi-CPU boxes, there are some problems with the I/O buffering: |
| 2939 | some output may appear twice. |
| 2940 | .Sh "XML::Parser not working" |
| 2941 | .IX Subsection "XML::Parser not working" |
| 2942 | Use XML::Parser 2.31 or later. |
| 2943 | .Sh "z/OS (\s-1OS/390\s0)" |
| 2944 | .IX Subsection "z/OS (OS/390)" |
| 2945 | z/OS has rather many test failures but the situation is actually much |
| 2946 | better than it was in 5.6.0; it's just that so many new modules and |
| 2947 | tests have been added. |
| 2948 | .PP |
| 2949 | .Vb 15 |
| 2950 | \& Failed Test Stat Wstat Total Fail Failed List of Failed |
| 2951 | \& --------------------------------------------------------------------------- |
| 2952 | \& ../ext/Data/Dumper/t/dumper.t 357 8 2.24% 311 314 325 327 |
| 2953 | \& 331 333 337 339 |
| 2954 | \& ../ext/IO/lib/IO/t/io_unix.t 5 4 80.00% 2-5 |
| 2955 | \& ../ext/Storable/t/downgrade.t 12 3072 169 12 7.10% 14-15 46-47 78-79 |
| 2956 | \& 110-111 150 161 |
| 2957 | \& ../lib/ExtUtils/t/Constant.t 121 30976 48 48 100.00% 1-48 |
| 2958 | \& ../lib/ExtUtils/t/Embed.t 9 9 100.00% 1-9 |
| 2959 | \& op/pat.t 922 7 0.76% 665 776 785 832- |
| 2960 | \& 834 845 |
| 2961 | \& op/sprintf.t 224 3 1.34% 98 100 136 |
| 2962 | \& op/tr.t 97 5 5.15% 63 71-74 |
| 2963 | \& uni/fold.t 780 6 0.77% 61 169 196 661 |
| 2964 | \& 710-711 |
| 2965 | .Ve |
| 2966 | .PP |
| 2967 | The failures in dumper.t and downgrade.t are problems in the tests, |
| 2968 | those in io_unix and sprintf are problems in the \s-1USS\s0 (\s-1UDP\s0 sockets and |
| 2969 | printf formats). The pat, tr, and fold failures are genuine Perl |
| 2970 | problems caused by \s-1EBCDIC\s0 (and in the pat and fold cases, combining |
| 2971 | that with Unicode). The Constant and Embed are probably problems in |
| 2972 | the tests (since they test Perl's ability to build extensions, and |
| 2973 | that seems to be working reasonably well.) |
| 2974 | .Sh "Unicode Support on \s-1EBCDIC\s0 Still Spotty" |
| 2975 | .IX Subsection "Unicode Support on EBCDIC Still Spotty" |
| 2976 | Though mostly working, Unicode support still has problem spots on |
| 2977 | \&\s-1EBCDIC\s0 platforms. One such known spot are the \f(CW\*(C`\ep{}\*(C'\fR and \f(CW\*(C`\eP{}\*(C'\fR |
| 2978 | regular expression constructs for code points less than 256: the |
| 2979 | \&\f(CW\*(C`pP\*(C'\fR are testing for Unicode code points, not knowing about \s-1EBCDIC\s0. |
| 2980 | .Sh "Seen In Perl 5.7 But Gone Now" |
| 2981 | .IX Subsection "Seen In Perl 5.7 But Gone Now" |
| 2982 | \&\f(CW\*(C`Time::Piece\*(C'\fR (previously known as \f(CW\*(C`Time::Object\*(C'\fR) was removed |
| 2983 | because it was felt that it didn't have enough value in it to be a |
| 2984 | core module. It is still a useful module, though, and is available |
| 2985 | from the \s-1CPAN\s0. |
| 2986 | .PP |
| 2987 | Perl 5.8 unfortunately does not build anymore on AmigaOS; this broke |
| 2988 | accidentally at some point. Since there are not that many Amiga |
| 2989 | developers available, we could not get this fixed and tested in time |
| 2990 | for 5.8.0. Perl 5.6.1 still works for AmigaOS (as does the 5.7.2 |
| 2991 | development release). |
| 2992 | .PP |
| 2993 | The \f(CW\*(C`PerlIO::Scalar\*(C'\fR and \f(CW\*(C`PerlIO::Via\*(C'\fR (capitalised) were renamed as |
| 2994 | \&\f(CW\*(C`PerlIO::scalar\*(C'\fR and \f(CW\*(C`PerlIO::via\*(C'\fR (all lowercase) just before 5.8.0. |
| 2995 | The main rationale was to have all core PerlIO layers to have all |
| 2996 | lowercase names. The \*(L"plugins\*(R" are named as usual, for example |
| 2997 | \&\f(CW\*(C`PerlIO::via::QuotedPrint\*(C'\fR. |
| 2998 | .PP |
| 2999 | The \f(CW\*(C`threads::shared::queue\*(C'\fR and \f(CW\*(C`threads::shared::semaphore\*(C'\fR were |
| 3000 | renamed as \f(CW\*(C`Thread::Queue\*(C'\fR and \f(CW\*(C`Thread::Semaphore\*(C'\fR just before 5.8.0. |
| 3001 | The main rationale was to have thread modules to obey normal naming, |
| 3002 | \&\f(CW\*(C`Thread::\*(C'\fR (the \f(CW\*(C`threads\*(C'\fR and \f(CW\*(C`threads::shared\*(C'\fR themselves are |
| 3003 | more pragma\-like, they affect compile\-time, so they stay lowercase). |
| 3004 | .SH "Reporting Bugs" |
| 3005 | .IX Header "Reporting Bugs" |
| 3006 | If you find what you think is a bug, you might check the articles |
| 3007 | recently posted to the comp.lang.perl.misc newsgroup and the perl |
| 3008 | bug database at http://bugs.perl.org/ . There may also be |
| 3009 | information at http://www.perl.com/ , the Perl Home Page. |
| 3010 | .PP |
| 3011 | If you believe you have an unreported bug, please run the \fBperlbug\fR |
| 3012 | program included with your release. Be sure to trim your bug down |
| 3013 | to a tiny but sufficient test case. Your bug report, along with the |
| 3014 | output of \f(CW\*(C`perl \-V\*(C'\fR, will be sent off to perlbug@perl.org to be |
| 3015 | analysed by the Perl porting team. |
| 3016 | .SH "SEE ALSO" |
| 3017 | .IX Header "SEE ALSO" |
| 3018 | The \fIChanges\fR file for exhaustive details on what changed. |
| 3019 | .PP |
| 3020 | The \fI\s-1INSTALL\s0\fR file for how to build Perl. |
| 3021 | .PP |
| 3022 | The \fI\s-1README\s0\fR file for general stuff. |
| 3023 | .PP |
| 3024 | The \fIArtistic\fR and \fICopying\fR files for copyright information. |
| 3025 | .SH "HISTORY" |
| 3026 | .IX Header "HISTORY" |
| 3027 | Written by Jarkko Hietaniemi <\fIjhi@iki.fi\fR>. |