| 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 "PERL561DELTA 1" |
| 132 | .TH PERL561DELTA 1 "2006-01-07" "perl v5.8.8" "Perl Programmers Reference Guide" |
| 133 | .SH "NAME" |
| 134 | perl561delta \- what's new for perl v5.6.x |
| 135 | .SH "DESCRIPTION" |
| 136 | .IX Header "DESCRIPTION" |
| 137 | This document describes differences between the 5.005 release and the 5.6.1 |
| 138 | release. |
| 139 | .SH "Summary of changes between 5.6.0 and 5.6.1" |
| 140 | .IX Header "Summary of changes between 5.6.0 and 5.6.1" |
| 141 | This section contains a summary of the changes between the 5.6.0 release |
| 142 | and the 5.6.1 release. More details about the changes mentioned here |
| 143 | may be found in the \fIChanges\fR files that accompany the Perl source |
| 144 | distribution. See perlhack for pointers to online resources where you |
| 145 | can inspect the individual patches described by these changes. |
| 146 | .Sh "Security Issues" |
| 147 | .IX Subsection "Security Issues" |
| 148 | suidperl will not run /bin/mail anymore, because some platforms have |
| 149 | a /bin/mail that is vulnerable to buffer overflow attacks. |
| 150 | .PP |
| 151 | Note that suidperl is neither built nor installed by default in |
| 152 | any recent version of perl. Use of suidperl is highly discouraged. |
| 153 | If you think you need it, try alternatives such as sudo first. |
| 154 | See http://www.courtesan.com/sudo/ . |
| 155 | .Sh "Core bug fixes" |
| 156 | .IX Subsection "Core bug fixes" |
| 157 | This is not an exhaustive list. It is intended to cover only the |
| 158 | significant user-visible changes. |
| 159 | .ie n .IP """UNIVERSAL::isa()""" 4 |
| 160 | .el .IP "\f(CWUNIVERSAL::isa()\fR" 4 |
| 161 | .IX Item "UNIVERSAL::isa()" |
| 162 | A bug in the caching mechanism used by \f(CW\*(C`UNIVERSAL::isa()\*(C'\fR that affected |
| 163 | base.pm has been fixed. The bug has existed since the 5.005 releases, |
| 164 | but wasn't tickled by base.pm in those releases. |
| 165 | .IP "Memory leaks" 4 |
| 166 | .IX Item "Memory leaks" |
| 167 | Various cases of memory leaks and attempts to access uninitialized memory |
| 168 | have been cured. See \*(L"Known Problems\*(R" below for further issues. |
| 169 | .IP "Numeric conversions" 4 |
| 170 | .IX Item "Numeric conversions" |
| 171 | Numeric conversions did not recognize changes in the string value |
| 172 | properly in certain circumstances. |
| 173 | .Sp |
| 174 | In other situations, large unsigned numbers (those above 2**31) could |
| 175 | sometimes lose their unsignedness, causing bogus results in arithmetic |
| 176 | operations. |
| 177 | .Sp |
| 178 | Integer modulus on large unsigned integers sometimes returned |
| 179 | incorrect values. |
| 180 | .Sp |
| 181 | Perl 5.6.0 generated \*(L"not a number\*(R" warnings on certain conversions where |
| 182 | previous versions didn't. |
| 183 | .Sp |
| 184 | These problems have all been rectified. |
| 185 | .Sp |
| 186 | Infinity is now recognized as a number. |
| 187 | .IP "qw(a\e\eb)" 4 |
| 188 | .IX Item "qw(ab)" |
| 189 | In Perl 5.6.0, qw(a\e\eb) produced a string with two backslashes instead |
| 190 | of one, in a departure from the behavior in previous versions. The |
| 191 | older behavior has been reinstated. |
| 192 | .IP "\fIcaller()\fR" 4 |
| 193 | .IX Item "caller()" |
| 194 | \&\fIcaller()\fR could cause core dumps in certain situations. Carp was sometimes |
| 195 | affected by this problem. |
| 196 | .IP "Bugs in regular expressions" 4 |
| 197 | .IX Item "Bugs in regular expressions" |
| 198 | Pattern matches on overloaded values are now handled correctly. |
| 199 | .Sp |
| 200 | Perl 5.6.0 parsed m/\ex{ab}/ incorrectly, leading to spurious warnings. |
| 201 | This has been corrected. |
| 202 | .Sp |
| 203 | The \s-1RE\s0 engine found in Perl 5.6.0 accidentally pessimised certain kinds |
| 204 | of simple pattern matches. These are now handled better. |
| 205 | .Sp |
| 206 | Regular expression debug output (whether through \f(CW\*(C`use re 'debug'\*(C'\fR |
| 207 | or via \f(CW\*(C`\-Dr\*(C'\fR) now looks better. |
| 208 | .Sp |
| 209 | Multi-line matches like \f(CW\*(C`"a\enxb\en" =~ /(?!\eA)x/m\*(C'\fR were flawed. The |
| 210 | bug has been fixed. |
| 211 | .Sp |
| 212 | Use of $& could trigger a core dump under some situations. This |
| 213 | is now avoided. |
| 214 | .Sp |
| 215 | Match variables \f(CW$1\fR et al., weren't being unset when a pattern match |
| 216 | was backtracking, and the anomaly showed up inside \f(CW\*(C`/...(?{ ... }).../\*(C'\fR |
| 217 | etc. These variables are now tracked correctly. |
| 218 | .Sp |
| 219 | \&\fIpos()\fR did not return the correct value within s///ge in earlier |
| 220 | versions. This is now handled correctly. |
| 221 | .ie n .IP """slurp"" mode" 4 |
| 222 | .el .IP "``slurp'' mode" 4 |
| 223 | .IX Item "slurp mode" |
| 224 | \&\fIreadline()\fR on files opened in \*(L"slurp\*(R" mode could return an extra "" at |
| 225 | the end in certain situations. This has been corrected. |
| 226 | .IP "Autovivification of symbolic references to special variables" 4 |
| 227 | .IX Item "Autovivification of symbolic references to special variables" |
| 228 | Autovivification of symbolic references of special variables described |
| 229 | in perlvar (as in \f(CW\*(C`${$num}\*(C'\fR) was accidentally disabled. This works |
| 230 | again now. |
| 231 | .IP "Lexical warnings" 4 |
| 232 | .IX Item "Lexical warnings" |
| 233 | Lexical warnings now propagate correctly into \f(CW\*(C`eval "..."\*(C'\fR. |
| 234 | .Sp |
| 235 | \&\f(CW\*(C`use warnings qw(FATAL all)\*(C'\fR did not work as intended. This has been |
| 236 | corrected. |
| 237 | .Sp |
| 238 | Lexical warnings could leak into other scopes in some situations. |
| 239 | This is now fixed. |
| 240 | .Sp |
| 241 | \&\fIwarnings::enabled()\fR now reports the state of $^W correctly if the caller |
| 242 | isn't using lexical warnings. |
| 243 | .IP "Spurious warnings and errors" 4 |
| 244 | .IX Item "Spurious warnings and errors" |
| 245 | Perl 5.6.0 could emit spurious warnings about redefinition of \fIdl_error()\fR |
| 246 | when statically building extensions into perl. This has been corrected. |
| 247 | .Sp |
| 248 | \&\*(L"our\*(R" variables could result in bogus \*(L"Variable will not stay shared\*(R" |
| 249 | warnings. This is now fixed. |
| 250 | .Sp |
| 251 | \&\*(L"our\*(R" variables of the same name declared in two sibling blocks |
| 252 | resulted in bogus warnings about \*(L"redeclaration\*(R" of the variables. |
| 253 | The problem has been corrected. |
| 254 | .IP "\fIglob()\fR" 4 |
| 255 | .IX Item "glob()" |
| 256 | Compatibility of the builtin \fIglob()\fR with old csh-based glob has been |
| 257 | improved with the addition of \s-1GLOB_ALPHASORT\s0 option. See \f(CW\*(C`File::Glob\*(C'\fR. |
| 258 | .Sp |
| 259 | \&\fIFile::Glob::glob()\fR has been renamed to \fIFile::Glob::bsd_glob()\fR |
| 260 | because the name clashes with the builtin \fIglob()\fR. The older |
| 261 | name is still available for compatibility, but is deprecated. |
| 262 | .Sp |
| 263 | Spurious syntax errors generated in certain situations, when \fIglob()\fR |
| 264 | caused File::Glob to be loaded for the first time, have been fixed. |
| 265 | .IP "Tainting" 4 |
| 266 | .IX Item "Tainting" |
| 267 | Some cases of inconsistent taint propagation (such as within hash |
| 268 | values) have been fixed. |
| 269 | .Sp |
| 270 | The tainting behavior of \fIsprintf()\fR has been rationalized. It does |
| 271 | not taint the result of floating point formats anymore, making the |
| 272 | behavior consistent with that of string interpolation. |
| 273 | .IP "\fIsort()\fR" 4 |
| 274 | .IX Item "sort()" |
| 275 | Arguments to \fIsort()\fR weren't being provided the right \fIwantarray()\fR context. |
| 276 | The comparison block is now run in scalar context, and the arguments to |
| 277 | be sorted are always provided list context. |
| 278 | .Sp |
| 279 | \&\fIsort()\fR is also fully reentrant, in the sense that the sort function |
| 280 | can itself call \fIsort()\fR. This did not work reliably in previous releases. |
| 281 | .IP "#line directives" 4 |
| 282 | .IX Item "#line directives" |
| 283 | #line directives now work correctly when they appear at the very |
| 284 | beginning of \f(CW\*(C`eval "..."\*(C'\fR. |
| 285 | .IP "Subroutine prototypes" 4 |
| 286 | .IX Item "Subroutine prototypes" |
| 287 | The (\e&) prototype now works properly. |
| 288 | .IP "\fImap()\fR" 4 |
| 289 | .IX Item "map()" |
| 290 | \&\fImap()\fR could get pathologically slow when the result list it generates |
| 291 | is larger than the source list. The performance has been improved for |
| 292 | common scenarios. |
| 293 | .IP "Debugger" 4 |
| 294 | .IX Item "Debugger" |
| 295 | Debugger exit code now reflects the script exit code. |
| 296 | .Sp |
| 297 | Condition \f(CW"0"\fR in breakpoints is now treated correctly. |
| 298 | .Sp |
| 299 | The \f(CW\*(C`d\*(C'\fR command now checks the line number. |
| 300 | .Sp |
| 301 | \&\f(CW$.\fR is no longer corrupted by the debugger. |
| 302 | .Sp |
| 303 | All debugger output now correctly goes to the socket if RemotePort |
| 304 | is set. |
| 305 | .IP "\s-1PERL5OPT\s0" 4 |
| 306 | .IX Item "PERL5OPT" |
| 307 | \&\s-1PERL5OPT\s0 can be set to more than one switch group. Previously, |
| 308 | it used to be limited to one group of options only. |
| 309 | .IP "\fIchop()\fR" 4 |
| 310 | .IX Item "chop()" |
| 311 | chop(@list) in list context returned the characters chopped in reverse |
| 312 | order. This has been reversed to be in the right order. |
| 313 | .IP "Unicode support" 4 |
| 314 | .IX Item "Unicode support" |
| 315 | Unicode support has seen a large number of incremental improvements, |
| 316 | but continues to be highly experimental. It is not expected to be |
| 317 | fully supported in the 5.6.x maintenance releases. |
| 318 | .Sp |
| 319 | \&\fIsubstr()\fR, \fIjoin()\fR, \fIrepeat()\fR, \fIreverse()\fR, \fIquotemeta()\fR and string |
| 320 | concatenation were all handling Unicode strings incorrectly in |
| 321 | Perl 5.6.0. This has been corrected. |
| 322 | .Sp |
| 323 | Support for \f(CW\*(C`tr///CU\*(C'\fR and \f(CW\*(C`tr///UC\*(C'\fR etc., have been removed since |
| 324 | we realized the interface is broken. For similar functionality, |
| 325 | see \*(L"pack\*(R" in perlfunc. |
| 326 | .Sp |
| 327 | The Unicode Character Database has been updated to version 3.0.1 |
| 328 | with additions made available to the public as of August 30, 2000. |
| 329 | .Sp |
| 330 | The Unicode character classes \ep{Blank} and \ep{SpacePerl} have been |
| 331 | added. \*(L"Blank\*(R" is like C \fIisblank()\fR, that is, it contains only |
| 332 | \&\*(L"horizontal whitespace\*(R" (the space character is, the newline isn't), |
| 333 | and the \*(L"SpacePerl\*(R" is the Unicode equivalent of \f(CW\*(C`\es\*(C'\fR (\ep{Space} |
| 334 | isn't, since that includes the vertical tabulator character, whereas |
| 335 | \&\f(CW\*(C`\es\*(C'\fR doesn't.) |
| 336 | .Sp |
| 337 | If you are experimenting with Unicode support in perl, the development |
| 338 | versions of Perl may have more to offer. In particular, I/O layers |
| 339 | are now available in the development track, but not in the maintenance |
| 340 | track, primarily to do backward compatibility issues. Unicode support |
| 341 | is also evolving rapidly on a daily basis in the development track\*(--the |
| 342 | maintenance track only reflects the most conservative of these changes. |
| 343 | .IP "64\-bit support" 4 |
| 344 | .IX Item "64-bit support" |
| 345 | Support for 64\-bit platforms has been improved, but continues to be |
| 346 | experimental. The level of support varies greatly among platforms. |
| 347 | .IP "Compiler" 4 |
| 348 | .IX Item "Compiler" |
| 349 | The B Compiler and its various backends have had many incremental |
| 350 | improvements, but they continue to remain highly experimental. Use in |
| 351 | production environments is discouraged. |
| 352 | .Sp |
| 353 | The perlcc tool has been rewritten so that the user interface is much |
| 354 | more like that of a C compiler. |
| 355 | .Sp |
| 356 | The perlbc tools has been removed. Use \f(CW\*(C`perlcc \-B\*(C'\fR instead. |
| 357 | .IP "Lvalue subroutines" 4 |
| 358 | .IX Item "Lvalue subroutines" |
| 359 | There have been various bugfixes to support lvalue subroutines better. |
| 360 | However, the feature still remains experimental. |
| 361 | .IP "IO::Socket" 4 |
| 362 | .IX Item "IO::Socket" |
| 363 | IO::Socket::INET failed to open the specified port if the service |
| 364 | name was not known. It now correctly uses the supplied port number |
| 365 | as is. |
| 366 | .IP "File::Find" 4 |
| 367 | .IX Item "File::Find" |
| 368 | File::Find now \fIchdir()\fRs correctly when chasing symbolic links. |
| 369 | .IP "xsubpp" 4 |
| 370 | .IX Item "xsubpp" |
| 371 | xsubpp now tolerates embedded \s-1POD\s0 sections. |
| 372 | .ie n .IP """no Module;""" 4 |
| 373 | .el .IP "\f(CWno Module;\fR" 4 |
| 374 | .IX Item "no Module;" |
| 375 | \&\f(CW\*(C`no Module;\*(C'\fR does not produce an error even if Module does not have an |
| 376 | \&\fIunimport()\fR method. This parallels the behavior of \f(CW\*(C`use\*(C'\fR vis-a-vis |
| 377 | \&\f(CW\*(C`import\*(C'\fR. |
| 378 | .IP "Tests" 4 |
| 379 | .IX Item "Tests" |
| 380 | A large number of tests have been added. |
| 381 | .Sh "Core features" |
| 382 | .IX Subsection "Core features" |
| 383 | \&\fIuntie()\fR will now call an \s-1\fIUNTIE\s0()\fR hook if it exists. See perltie |
| 384 | for details. |
| 385 | .PP |
| 386 | The \f(CW\*(C`\-DT\*(C'\fR command line switch outputs copious tokenizing information. |
| 387 | See perlrun. |
| 388 | .PP |
| 389 | Arrays are now always interpolated in double-quotish strings. Previously, |
| 390 | \&\f(CW"foo@bar.com"\fR used to be a fatal error at compile time, if an array |
| 391 | \&\f(CW@bar\fR was not used or declared. This transitional behavior was |
| 392 | intended to help migrate perl4 code, and is deemed to be no longer useful. |
| 393 | See \*(L"Arrays now always interpolate into double-quoted strings\*(R". |
| 394 | .PP |
| 395 | \&\fIkeys()\fR, \fIeach()\fR, \fIpop()\fR, \fIpush()\fR, \fIshift()\fR, \fIsplice()\fR and \fIunshift()\fR |
| 396 | can all be overridden now. |
| 397 | .PP |
| 398 | \&\f(CW\*(C`my _\|_PACKAGE_\|_ $obj\*(C'\fR now does the expected thing. |
| 399 | .Sh "Configuration issues" |
| 400 | .IX Subsection "Configuration issues" |
| 401 | On some systems (\s-1IRIX\s0 and Solaris among them) the system malloc is demonstrably |
| 402 | better. While the defaults haven't been changed in order to retain binary |
| 403 | compatibility with earlier releases, you may be better off building perl |
| 404 | with \f(CW\*(C`Configure \-Uusemymalloc ...\*(C'\fR as discussed in the \fI\s-1INSTALL\s0\fR file. |
| 405 | .PP |
| 406 | \&\f(CW\*(C`Configure\*(C'\fR has been enhanced in various ways: |
| 407 | .IP "\(bu" 4 |
| 408 | Minimizes use of temporary files. |
| 409 | .IP "\(bu" 4 |
| 410 | By default, does not link perl with libraries not used by it, such as |
| 411 | the various dbm libraries. SunOS 4.x hints preserve behavior on that |
| 412 | platform. |
| 413 | .IP "\(bu" 4 |
| 414 | Support for pdp11\-style memory models has been removed due to obsolescence. |
| 415 | .IP "\(bu" 4 |
| 416 | Building outside the source tree is supported on systems that have |
| 417 | symbolic links. This is done by running |
| 418 | .Sp |
| 419 | .Vb 2 |
| 420 | \& sh /path/to/source/Configure -Dmksymlinks ... |
| 421 | \& make all test install |
| 422 | .Ve |
| 423 | .Sp |
| 424 | in a directory other than the perl source directory. See \fI\s-1INSTALL\s0\fR. |
| 425 | .IP "\(bu" 4 |
| 426 | \&\f(CW\*(C`Configure \-S\*(C'\fR can be run non\-interactively. |
| 427 | .Sh "Documentation" |
| 428 | .IX Subsection "Documentation" |
| 429 | \&\s-1README\s0.aix, \s-1README\s0.solaris and \s-1README\s0.macos have been added. |
| 430 | \&\s-1README\s0.posix\-bc has been renamed to \s-1README\s0.bs2000. These are |
| 431 | installed as perlaix, perlsolaris, perlmacos, and |
| 432 | perlbs2000 respectively. |
| 433 | .PP |
| 434 | The following pod documents are brand new: |
| 435 | .PP |
| 436 | .Vb 7 |
| 437 | \& perlclib Internal replacements for standard C library functions |
| 438 | \& perldebtut Perl debugging tutorial |
| 439 | \& perlebcdic Considerations for running Perl on EBCDIC platforms |
| 440 | \& perlnewmod Perl modules: preparing a new module for distribution |
| 441 | \& perlrequick Perl regular expressions quick start |
| 442 | \& perlretut Perl regular expressions tutorial |
| 443 | \& perlutil utilities packaged with the Perl distribution |
| 444 | .Ve |
| 445 | .PP |
| 446 | The \fI\s-1INSTALL\s0\fR file has been expanded to cover various issues, such as |
| 447 | 64\-bit support. |
| 448 | .PP |
| 449 | A longer list of contributors has been added to the source distribution. |
| 450 | See the file \f(CW\*(C`AUTHORS\*(C'\fR. |
| 451 | .PP |
| 452 | Numerous other changes have been made to the included documentation and FAQs. |
| 453 | .Sh "Bundled modules" |
| 454 | .IX Subsection "Bundled modules" |
| 455 | The following modules have been added. |
| 456 | .IP "B::Concise" 4 |
| 457 | .IX Item "B::Concise" |
| 458 | Walks Perl syntax tree, printing concise info about ops. See B::Concise. |
| 459 | .IP "File::Temp" 4 |
| 460 | .IX Item "File::Temp" |
| 461 | Returns name and handle of a temporary file safely. See File::Temp. |
| 462 | .IP "Pod::LaTeX" 4 |
| 463 | .IX Item "Pod::LaTeX" |
| 464 | Converts Pod data to formatted LaTeX. See Pod::LaTeX. |
| 465 | .IP "Pod::Text::Overstrike" 4 |
| 466 | .IX Item "Pod::Text::Overstrike" |
| 467 | Converts \s-1POD\s0 data to formatted overstrike text. See Pod::Text::Overstrike. |
| 468 | .PP |
| 469 | The following modules have been upgraded. |
| 470 | .IP "\s-1CGI\s0" 4 |
| 471 | .IX Item "CGI" |
| 472 | \&\s-1CGI\s0 v2.752 is now included. |
| 473 | .IP "\s-1CPAN\s0" 4 |
| 474 | .IX Item "CPAN" |
| 475 | \&\s-1CPAN\s0 v1.59_54 is now included. |
| 476 | .IP "Class::Struct" 4 |
| 477 | .IX Item "Class::Struct" |
| 478 | Various bugfixes have been added. |
| 479 | .IP "DB_File" 4 |
| 480 | .IX Item "DB_File" |
| 481 | DB_File v1.75 supports newer Berkeley \s-1DB\s0 versions, among other |
| 482 | improvements. |
| 483 | .IP "Devel::Peek" 4 |
| 484 | .IX Item "Devel::Peek" |
| 485 | Devel::Peek has been enhanced to support dumping of memory statistics, |
| 486 | when perl is built with the included \fImalloc()\fR. |
| 487 | .IP "File::Find" 4 |
| 488 | .IX Item "File::Find" |
| 489 | File::Find now supports pre and post-processing of the files in order |
| 490 | to \fIsort()\fR them, etc. |
| 491 | .IP "Getopt::Long" 4 |
| 492 | .IX Item "Getopt::Long" |
| 493 | Getopt::Long v2.25 is included. |
| 494 | .IP "IO::Poll" 4 |
| 495 | .IX Item "IO::Poll" |
| 496 | Various bug fixes have been included. |
| 497 | .IP "IPC::Open3" 4 |
| 498 | .IX Item "IPC::Open3" |
| 499 | IPC::Open3 allows use of numeric file descriptors. |
| 500 | .IP "Math::BigFloat" 4 |
| 501 | .IX Item "Math::BigFloat" |
| 502 | The \fIfmod()\fR function supports modulus operations. Various bug fixes |
| 503 | have also been included. |
| 504 | .IP "Math::Complex" 4 |
| 505 | .IX Item "Math::Complex" |
| 506 | Math::Complex handles inf, NaN etc., better. |
| 507 | .IP "Net::Ping" 4 |
| 508 | .IX Item "Net::Ping" |
| 509 | \&\fIping()\fR could fail on odd number of data bytes, and when the echo service |
| 510 | isn't running. This has been corrected. |
| 511 | .IP "Opcode" 4 |
| 512 | .IX Item "Opcode" |
| 513 | A memory leak has been fixed. |
| 514 | .IP "Pod::Parser" 4 |
| 515 | .IX Item "Pod::Parser" |
| 516 | Version 1.13 of the Pod::Parser suite is included. |
| 517 | .IP "Pod::Text" 4 |
| 518 | .IX Item "Pod::Text" |
| 519 | Pod::Text and related modules have been upgraded to the versions |
| 520 | in podlators suite v2.08. |
| 521 | .IP "SDBM_File" 4 |
| 522 | .IX Item "SDBM_File" |
| 523 | On dosish platforms, some keys went missing because of lack of support for |
| 524 | files with \*(L"holes\*(R". A workaround for the problem has been added. |
| 525 | .IP "Sys::Syslog" 4 |
| 526 | .IX Item "Sys::Syslog" |
| 527 | Various bug fixes have been included. |
| 528 | .IP "Tie::RefHash" 4 |
| 529 | .IX Item "Tie::RefHash" |
| 530 | Now supports Tie::RefHash::Nestable to automagically tie hashref values. |
| 531 | .IP "Tie::SubstrHash" 4 |
| 532 | .IX Item "Tie::SubstrHash" |
| 533 | Various bug fixes have been included. |
| 534 | .Sh "Platform-specific improvements" |
| 535 | .IX Subsection "Platform-specific improvements" |
| 536 | The following new ports are now available. |
| 537 | .IP "\s-1NCR\s0 MP-RAS" 4 |
| 538 | .IX Item "NCR MP-RAS" |
| 539 | .PD 0 |
| 540 | .IP "NonStop-UX" 4 |
| 541 | .IX Item "NonStop-UX" |
| 542 | .PD |
| 543 | .PP |
| 544 | Perl now builds under Amdahl \s-1UTS\s0. |
| 545 | .PP |
| 546 | Perl has also been verified to build under Amiga \s-1OS\s0. |
| 547 | .PP |
| 548 | Support for \s-1EPOC\s0 has been much improved. See \s-1README\s0.epoc. |
| 549 | .PP |
| 550 | Building perl with \-Duseithreads or \-Duse5005threads now works |
| 551 | under HP-UX 10.20 (previously it only worked under 10.30 or later). |
| 552 | You will need a thread library package installed. See \s-1README\s0.hpux. |
| 553 | .PP |
| 554 | Long doubles should now work under Linux. |
| 555 | .PP |
| 556 | Mac \s-1OS\s0 Classic is now supported in the mainstream source package. |
| 557 | See \s-1README\s0.macos. |
| 558 | .PP |
| 559 | Support for MPE/iX has been updated. See \s-1README\s0.mpeix. |
| 560 | .PP |
| 561 | Support for \s-1OS/2\s0 has been improved. See \f(CW\*(C`os2/Changes\*(C'\fR and \s-1README\s0.os2. |
| 562 | .PP |
| 563 | Dynamic loading on z/OS (formerly \s-1OS/390\s0) has been improved. See |
| 564 | \&\s-1README\s0.os390. |
| 565 | .PP |
| 566 | Support for \s-1VMS\s0 has seen many incremental improvements, including |
| 567 | better support for operators like backticks and \fIsystem()\fR, and better |
| 568 | \&\f(CW%ENV\fR handling. See \f(CW\*(C`README.vms\*(C'\fR and perlvms. |
| 569 | .PP |
| 570 | Support for Stratus \s-1VOS\s0 has been improved. See \f(CW\*(C`vos/Changes\*(C'\fR and \s-1README\s0.vos. |
| 571 | .PP |
| 572 | Support for Windows has been improved. |
| 573 | .IP "\(bu" 4 |
| 574 | \&\fIfork()\fR emulation has been improved in various ways, but still continues |
| 575 | to be experimental. See perlfork for known bugs and caveats. |
| 576 | .IP "\(bu" 4 |
| 577 | %SIG has been enabled under \s-1USE_ITHREADS\s0, but its use is completely |
| 578 | unsupported under all configurations. |
| 579 | .IP "\(bu" 4 |
| 580 | Borland \*(C+ v5.5 is now a supported compiler that can build Perl. |
| 581 | However, the generated binaries continue to be incompatible with those |
| 582 | generated by the other supported compilers (\s-1GCC\s0 and Visual \*(C+). |
| 583 | .IP "\(bu" 4 |
| 584 | Non-blocking waits for child processes (or pseudo\-processes) are |
| 585 | supported via \f(CW\*(C`waitpid($pid, &POSIX::WNOHANG)\*(C'\fR. |
| 586 | .IP "\(bu" 4 |
| 587 | A memory leak in \fIaccept()\fR has been fixed. |
| 588 | .IP "\(bu" 4 |
| 589 | \&\fIwait()\fR, \fIwaitpid()\fR and backticks now return the correct exit status under |
| 590 | Windows 9x. |
| 591 | .IP "\(bu" 4 |
| 592 | Trailing new \f(CW%ENV\fR entries weren't propagated to child processes. This |
| 593 | is now fixed. |
| 594 | .IP "\(bu" 4 |
| 595 | Current directory entries in \f(CW%ENV\fR are now correctly propagated to child |
| 596 | processes. |
| 597 | .IP "\(bu" 4 |
| 598 | Duping socket handles with open(F, \*(L">&MYSOCK\*(R") now works under Windows 9x. |
| 599 | .IP "\(bu" 4 |
| 600 | The makefiles now provide a single switch to bulk-enable all the features |
| 601 | enabled in ActiveState ActivePerl (a popular binary distribution). |
| 602 | .IP "\(bu" 4 |
| 603 | \&\fIWin32::GetCwd()\fR correctly returns C:\e instead of C: when at the drive root. |
| 604 | Other bugs in \fIchdir()\fR and \fICwd::cwd()\fR have also been fixed. |
| 605 | .IP "\(bu" 4 |
| 606 | \&\fIfork()\fR correctly returns undef and sets \s-1EAGAIN\s0 when it runs out of |
| 607 | pseudo-process handles. |
| 608 | .IP "\(bu" 4 |
| 609 | ExtUtils::MakeMaker now uses \f(CW$ENV\fR{\s-1LIB\s0} to search for libraries. |
| 610 | .IP "\(bu" 4 |
| 611 | \&\s-1UNC\s0 path handling is better when perl is built to support \fIfork()\fR. |
| 612 | .IP "\(bu" 4 |
| 613 | A handle leak in socket handling has been fixed. |
| 614 | .IP "\(bu" 4 |
| 615 | \&\fIsend()\fR works from within a pseudo\-process. |
| 616 | .PP |
| 617 | Unless specifically qualified otherwise, the remainder of this document |
| 618 | covers changes between the 5.005 and 5.6.0 releases. |
| 619 | .SH "Core Enhancements" |
| 620 | .IX Header "Core Enhancements" |
| 621 | .Sh "Interpreter cloning, threads, and concurrency" |
| 622 | .IX Subsection "Interpreter cloning, threads, and concurrency" |
| 623 | Perl 5.6.0 introduces the beginnings of support for running multiple |
| 624 | interpreters concurrently in different threads. In conjunction with |
| 625 | the \fIperl_clone()\fR \s-1API\s0 call, which can be used to selectively duplicate |
| 626 | the state of any given interpreter, it is possible to compile a |
| 627 | piece of code once in an interpreter, clone that interpreter |
| 628 | one or more times, and run all the resulting interpreters in distinct |
| 629 | threads. |
| 630 | .PP |
| 631 | On the Windows platform, this feature is used to emulate \fIfork()\fR at the |
| 632 | interpreter level. See perlfork for details about that. |
| 633 | .PP |
| 634 | This feature is still in evolution. It is eventually meant to be used |
| 635 | to selectively clone a subroutine and data reachable from that |
| 636 | subroutine in a separate interpreter and run the cloned subroutine |
| 637 | in a separate thread. Since there is no shared data between the |
| 638 | interpreters, little or no locking will be needed (unless parts of |
| 639 | the symbol table are explicitly shared). This is obviously intended |
| 640 | to be an easy-to-use replacement for the existing threads support. |
| 641 | .PP |
| 642 | Support for cloning interpreters and interpreter concurrency can be |
| 643 | enabled using the \-Dusethreads Configure option (see win32/Makefile for |
| 644 | how to enable it on Windows.) The resulting perl executable will be |
| 645 | functionally identical to one that was built with \-Dmultiplicity, but |
| 646 | the \fIperl_clone()\fR \s-1API\s0 call will only be available in the former. |
| 647 | .PP |
| 648 | \&\-Dusethreads enables the cpp macro \s-1USE_ITHREADS\s0 by default, which in turn |
| 649 | enables Perl source code changes that provide a clear separation between |
| 650 | the op tree and the data it operates with. The former is immutable, and |
| 651 | can therefore be shared between an interpreter and all of its clones, |
| 652 | while the latter is considered local to each interpreter, and is therefore |
| 653 | copied for each clone. |
| 654 | .PP |
| 655 | Note that building Perl with the \-Dusemultiplicity Configure option |
| 656 | is adequate if you wish to run multiple \fBindependent\fR interpreters |
| 657 | concurrently in different threads. \-Dusethreads only provides the |
| 658 | additional functionality of the \fIperl_clone()\fR \s-1API\s0 call and other |
| 659 | support for running \fBcloned\fR interpreters concurrently. |
| 660 | .PP |
| 661 | .Vb 2 |
| 662 | \& NOTE: This is an experimental feature. Implementation details are |
| 663 | \& subject to change. |
| 664 | .Ve |
| 665 | .Sh "Lexically scoped warning categories" |
| 666 | .IX Subsection "Lexically scoped warning categories" |
| 667 | You can now control the granularity of warnings emitted by perl at a finer |
| 668 | level using the \f(CW\*(C`use warnings\*(C'\fR pragma. warnings and perllexwarn |
| 669 | have copious documentation on this feature. |
| 670 | .Sh "Unicode and \s-1UTF\-8\s0 support" |
| 671 | .IX Subsection "Unicode and UTF-8 support" |
| 672 | Perl now uses \s-1UTF\-8\s0 as its internal representation for character |
| 673 | strings. The \f(CW\*(C`utf8\*(C'\fR and \f(CW\*(C`bytes\*(C'\fR pragmas are used to control this support |
| 674 | in the current lexical scope. See perlunicode, utf8 and bytes for |
| 675 | more information. |
| 676 | .PP |
| 677 | This feature is expected to evolve quickly to support some form of I/O |
| 678 | disciplines that can be used to specify the kind of input and output data |
| 679 | (bytes or characters). Until that happens, additional modules from \s-1CPAN\s0 |
| 680 | will be needed to complete the toolkit for dealing with Unicode. |
| 681 | .PP |
| 682 | .Vb 2 |
| 683 | \& NOTE: This should be considered an experimental feature. Implementation |
| 684 | \& details are subject to change. |
| 685 | .Ve |
| 686 | .Sh "Support for interpolating named characters" |
| 687 | .IX Subsection "Support for interpolating named characters" |
| 688 | The new \f(CW\*(C`\eN\*(C'\fR escape interpolates named characters within strings. |
| 689 | For example, \f(CW"Hi! \eN{WHITE SMILING FACE}"\fR evaluates to a string |
| 690 | with a Unicode smiley face at the end. |
| 691 | .ie n .Sh """our"" declarations" |
| 692 | .el .Sh "``our'' declarations" |
| 693 | .IX Subsection "our declarations" |
| 694 | An \*(L"our\*(R" declaration introduces a value that can be best understood |
| 695 | as a lexically scoped symbolic alias to a global variable in the |
| 696 | package that was current where the variable was declared. This is |
| 697 | mostly useful as an alternative to the \f(CW\*(C`vars\*(C'\fR pragma, but also provides |
| 698 | the opportunity to introduce typing and other attributes for such |
| 699 | variables. See \*(L"our\*(R" in perlfunc. |
| 700 | .Sh "Support for strings represented as a vector of ordinals" |
| 701 | .IX Subsection "Support for strings represented as a vector of ordinals" |
| 702 | Literals of the form \f(CW\*(C`v1.2.3.4\*(C'\fR are now parsed as a string composed |
| 703 | of characters with the specified ordinals. This is an alternative, more |
| 704 | readable way to construct (possibly Unicode) strings instead of |
| 705 | interpolating characters, as in \f(CW"\ex{1}\ex{2}\ex{3}\ex{4}"\fR. The leading |
| 706 | \&\f(CW\*(C`v\*(C'\fR may be omitted if there are more than two ordinals, so \f(CW1.2.3\fR is |
| 707 | parsed the same as \f(CW\*(C`v1.2.3\*(C'\fR. |
| 708 | .PP |
| 709 | Strings written in this form are also useful to represent version \*(L"numbers\*(R". |
| 710 | It is easy to compare such version \*(L"numbers\*(R" (which are really just plain |
| 711 | strings) using any of the usual string comparison operators \f(CW\*(C`eq\*(C'\fR, \f(CW\*(C`ne\*(C'\fR, |
| 712 | \&\f(CW\*(C`lt\*(C'\fR, \f(CW\*(C`gt\*(C'\fR, etc., or perform bitwise string operations on them using \f(CW\*(C`|\*(C'\fR, |
| 713 | \&\f(CW\*(C`&\*(C'\fR, etc. |
| 714 | .PP |
| 715 | In conjunction with the new \f(CW$^V\fR magic variable (which contains |
| 716 | the perl version as a string), such literals can be used as a readable way |
| 717 | to check if you're running a particular version of Perl: |
| 718 | .PP |
| 719 | .Vb 4 |
| 720 | \& # this will parse in older versions of Perl also |
| 721 | \& if ($^V and $^V gt v5.6.0) { |
| 722 | \& # new features supported |
| 723 | \& } |
| 724 | .Ve |
| 725 | .PP |
| 726 | \&\f(CW\*(C`require\*(C'\fR and \f(CW\*(C`use\*(C'\fR also have some special magic to support such literals. |
| 727 | They will be interpreted as a version rather than as a module name: |
| 728 | .PP |
| 729 | .Vb 2 |
| 730 | \& require v5.6.0; # croak if $^V lt v5.6.0 |
| 731 | \& use v5.6.0; # same, but croaks at compile-time |
| 732 | .Ve |
| 733 | .PP |
| 734 | Alternatively, the \f(CW\*(C`v\*(C'\fR may be omitted if there is more than one dot: |
| 735 | .PP |
| 736 | .Vb 2 |
| 737 | \& require 5.6.0; |
| 738 | \& use 5.6.0; |
| 739 | .Ve |
| 740 | .PP |
| 741 | Also, \f(CW\*(C`sprintf\*(C'\fR and \f(CW\*(C`printf\*(C'\fR support the Perl-specific format flag \f(CW%v\fR |
| 742 | to print ordinals of characters in arbitrary strings: |
| 743 | .PP |
| 744 | .Vb 3 |
| 745 | \& printf "v%vd", $^V; # prints current version, such as "v5.5.650" |
| 746 | \& printf "%*vX", ":", $addr; # formats IPv6 address |
| 747 | \& printf "%*vb", " ", $bits; # displays bitstring |
| 748 | .Ve |
| 749 | .PP |
| 750 | See \*(L"Scalar value constructors\*(R" in perldata for additional information. |
| 751 | .Sh "Improved Perl version numbering system" |
| 752 | .IX Subsection "Improved Perl version numbering system" |
| 753 | Beginning with Perl version 5.6.0, the version number convention has been |
| 754 | changed to a \*(L"dotted integer\*(R" scheme that is more commonly found in open |
| 755 | source projects. |
| 756 | .PP |
| 757 | Maintenance versions of v5.6.0 will be released as v5.6.1, v5.6.2 etc. |
| 758 | The next development series following v5.6.0 will be numbered v5.7.x, |
| 759 | beginning with v5.7.0, and the next major production release following |
| 760 | v5.6.0 will be v5.8.0. |
| 761 | .PP |
| 762 | The English module now sets \f(CW$PERL_VERSION\fR to $^V (a string value) rather |
| 763 | than \f(CW$]\fR (a numeric value). (This is a potential incompatibility. |
| 764 | Send us a report via perlbug if you are affected by this.) |
| 765 | .PP |
| 766 | The v1.2.3 syntax is also now legal in Perl. |
| 767 | See \*(L"Support for strings represented as a vector of ordinals\*(R" for more on that. |
| 768 | .PP |
| 769 | To cope with the new versioning system's use of at least three significant |
| 770 | digits for each version component, the method used for incrementing the |
| 771 | subversion number has also changed slightly. We assume that versions older |
| 772 | than v5.6.0 have been incrementing the subversion component in multiples of |
| 773 | 10. Versions after v5.6.0 will increment them by 1. Thus, using the new |
| 774 | notation, 5.005_03 is the \*(L"same\*(R" as v5.5.30, and the first maintenance |
| 775 | version following v5.6.0 will be v5.6.1 (which should be read as being |
| 776 | equivalent to a floating point value of 5.006_001 in the older format, |
| 777 | stored in \f(CW$]\fR). |
| 778 | .Sh "New syntax for declaring subroutine attributes" |
| 779 | .IX Subsection "New syntax for declaring subroutine attributes" |
| 780 | Formerly, if you wanted to mark a subroutine as being a method call or |
| 781 | as requiring an automatic \fIlock()\fR when it is entered, you had to declare |
| 782 | that with a \f(CW\*(C`use attrs\*(C'\fR pragma in the body of the subroutine. |
| 783 | That can now be accomplished with declaration syntax, like this: |
| 784 | .PP |
| 785 | .Vb 5 |
| 786 | \& sub mymethod : locked method; |
| 787 | \& ... |
| 788 | \& sub mymethod : locked method { |
| 789 | \& ... |
| 790 | \& } |
| 791 | .Ve |
| 792 | .PP |
| 793 | .Vb 5 |
| 794 | \& sub othermethod :locked :method; |
| 795 | \& ... |
| 796 | \& sub othermethod :locked :method { |
| 797 | \& ... |
| 798 | \& } |
| 799 | .Ve |
| 800 | .PP |
| 801 | (Note how only the first \f(CW\*(C`:\*(C'\fR is mandatory, and whitespace surrounding |
| 802 | the \f(CW\*(C`:\*(C'\fR is optional.) |
| 803 | .PP |
| 804 | \&\fIAutoSplit.pm\fR and \fISelfLoader.pm\fR have been updated to keep the attributes |
| 805 | with the stubs they provide. See attributes. |
| 806 | .Sh "File and directory handles can be autovivified" |
| 807 | .IX Subsection "File and directory handles can be autovivified" |
| 808 | Similar to how constructs such as \f(CW\*(C`$x\->[0]\*(C'\fR autovivify a reference, |
| 809 | handle constructors (\fIopen()\fR, \fIopendir()\fR, \fIpipe()\fR, \fIsocketpair()\fR, \fIsysopen()\fR, |
| 810 | \&\fIsocket()\fR, and \fIaccept()\fR) now autovivify a file or directory handle |
| 811 | if the handle passed to them is an uninitialized scalar variable. This |
| 812 | allows the constructs such as \f(CW\*(C`open(my $fh, ...)\*(C'\fR and \f(CW\*(C`open(local $fh,...)\*(C'\fR |
| 813 | to be used to create filehandles that will conveniently be closed |
| 814 | automatically when the scope ends, provided there are no other references |
| 815 | to them. This largely eliminates the need for typeglobs when opening |
| 816 | filehandles that must be passed around, as in the following example: |
| 817 | .PP |
| 818 | .Vb 5 |
| 819 | \& sub myopen { |
| 820 | \& open my $fh, "@_" |
| 821 | \& or die "Can't open '@_': $!"; |
| 822 | \& return $fh; |
| 823 | \& } |
| 824 | .Ve |
| 825 | .PP |
| 826 | .Vb 5 |
| 827 | \& { |
| 828 | \& my $f = myopen("</etc/motd"); |
| 829 | \& print <$f>; |
| 830 | \& # $f implicitly closed here |
| 831 | \& } |
| 832 | .Ve |
| 833 | .Sh "\fIopen()\fP with more than two arguments" |
| 834 | .IX Subsection "open() with more than two arguments" |
| 835 | If \fIopen()\fR is passed three arguments instead of two, the second argument |
| 836 | is used as the mode and the third argument is taken to be the file name. |
| 837 | This is primarily useful for protecting against unintended magic behavior |
| 838 | of the traditional two-argument form. See \*(L"open\*(R" in perlfunc. |
| 839 | .Sh "64\-bit support" |
| 840 | .IX Subsection "64-bit support" |
| 841 | Any platform that has 64\-bit integers either |
| 842 | .PP |
| 843 | .Vb 3 |
| 844 | \& (1) natively as longs or ints |
| 845 | \& (2) via special compiler flags |
| 846 | \& (3) using long long or int64_t |
| 847 | .Ve |
| 848 | .PP |
| 849 | is able to use \*(L"quads\*(R" (64\-bit integers) as follows: |
| 850 | .IP "\(bu" 4 |
| 851 | constants (decimal, hexadecimal, octal, binary) in the code |
| 852 | .IP "\(bu" 4 |
| 853 | arguments to \fIoct()\fR and \fIhex()\fR |
| 854 | .IP "\(bu" 4 |
| 855 | arguments to \fIprint()\fR, \fIprintf()\fR and \fIsprintf()\fR (flag prefixes ll, L, q) |
| 856 | .IP "\(bu" 4 |
| 857 | printed as such |
| 858 | .IP "\(bu" 4 |
| 859 | \&\fIpack()\fR and \fIunpack()\fR \*(L"q\*(R" and \*(L"Q\*(R" formats |
| 860 | .IP "\(bu" 4 |
| 861 | in basic arithmetics: + \- * / % (\s-1NOTE:\s0 operating close to the limits |
| 862 | of the integer values may produce surprising results) |
| 863 | .IP "\(bu" 4 |
| 864 | in bit arithmetics: & | ^ ~ << >> (\s-1NOTE:\s0 these used to be forced |
| 865 | to be 32 bits wide but now operate on the full native width.) |
| 866 | .IP "\(bu" 4 |
| 867 | \&\fIvec()\fR |
| 868 | .PP |
| 869 | Note that unless you have the case (a) you will have to configure |
| 870 | and compile Perl using the \-Duse64bitint Configure flag. |
| 871 | .PP |
| 872 | .Vb 2 |
| 873 | \& NOTE: The Configure flags -Duselonglong and -Duse64bits have been |
| 874 | \& deprecated. Use -Duse64bitint instead. |
| 875 | .Ve |
| 876 | .PP |
| 877 | There are actually two modes of 64\-bitness: the first one is achieved |
| 878 | using Configure \-Duse64bitint and the second one using Configure |
| 879 | \&\-Duse64bitall. The difference is that the first one is minimal and |
| 880 | the second one maximal. The first works in more places than the second. |
| 881 | .PP |
| 882 | The \f(CW\*(C`use64bitint\*(C'\fR does only as much as is required to get 64\-bit |
| 883 | integers into Perl (this may mean, for example, using \*(L"long longs\*(R") |
| 884 | while your memory may still be limited to 2 gigabytes (because your |
| 885 | pointers could still be 32\-bit). Note that the name \f(CW\*(C`64bitint\*(C'\fR does |
| 886 | not imply that your C compiler will be using 64\-bit \f(CW\*(C`int\*(C'\fRs (it might, |
| 887 | but it doesn't have to): the \f(CW\*(C`use64bitint\*(C'\fR means that you will be |
| 888 | able to have 64 bits wide scalar values. |
| 889 | .PP |
| 890 | The \f(CW\*(C`use64bitall\*(C'\fR goes all the way by attempting to switch also |
| 891 | integers (if it can), longs (and pointers) to being 64\-bit. This may |
| 892 | create an even more binary incompatible Perl than \-Duse64bitint: the |
| 893 | resulting executable may not run at all in a 32\-bit box, or you may |
| 894 | have to reboot/reconfigure/rebuild your operating system to be 64\-bit |
| 895 | aware. |
| 896 | .PP |
| 897 | Natively 64\-bit systems like Alpha and Cray need neither \-Duse64bitint |
| 898 | nor \-Duse64bitall. |
| 899 | .PP |
| 900 | Last but not least: note that due to Perl's habit of always using |
| 901 | floating point numbers, the quads are still not true integers. |
| 902 | When quads overflow their limits (0...18_446_744_073_709_551_615 unsigned, |
| 903 | \&\-9_223_372_036_854_775_808...9_223_372_036_854_775_807 signed), they |
| 904 | are silently promoted to floating point numbers, after which they will |
| 905 | start losing precision (in their lower digits). |
| 906 | .PP |
| 907 | .Vb 4 |
| 908 | \& NOTE: 64-bit support is still experimental on most platforms. |
| 909 | \& Existing support only covers the LP64 data model. In particular, the |
| 910 | \& LLP64 data model is not yet supported. 64-bit libraries and system |
| 911 | \& APIs on many platforms have not stabilized--your mileage may vary. |
| 912 | .Ve |
| 913 | .Sh "Large file support" |
| 914 | .IX Subsection "Large file support" |
| 915 | If you have filesystems that support \*(L"large files\*(R" (files larger than |
| 916 | 2 gigabytes), you may now also be able to create and access them from |
| 917 | Perl. |
| 918 | .PP |
| 919 | .Vb 2 |
| 920 | \& NOTE: The default action is to enable large file support, if |
| 921 | \& available on the platform. |
| 922 | .Ve |
| 923 | .PP |
| 924 | If the large file support is on, and you have a Fcntl constant |
| 925 | O_LARGEFILE, the O_LARGEFILE is automatically added to the flags |
| 926 | of \fIsysopen()\fR. |
| 927 | .PP |
| 928 | Beware that unless your filesystem also supports \*(L"sparse files\*(R" seeking |
| 929 | to umpteen petabytes may be inadvisable. |
| 930 | .PP |
| 931 | Note that in addition to requiring a proper file system to do large |
| 932 | files you may also need to adjust your per-process (or your |
| 933 | per\-system, or per\-process\-group, or per\-user\-group) maximum filesize |
| 934 | limits before running Perl scripts that try to handle large files, |
| 935 | especially if you intend to write such files. |
| 936 | .PP |
| 937 | Finally, in addition to your process/process group maximum filesize |
| 938 | limits, you may have quota limits on your filesystems that stop you |
| 939 | (your user id or your user group id) from using large files. |
| 940 | .PP |
| 941 | Adjusting your process/user/group/file system/operating system limits |
| 942 | is outside the scope of Perl core language. For process limits, you |
| 943 | may try increasing the limits using your shell's limits/limit/ulimit |
| 944 | command before running Perl. The BSD::Resource extension (not |
| 945 | included with the standard Perl distribution) may also be of use, it |
| 946 | offers the getrlimit/setrlimit interface that can be used to adjust |
| 947 | process resource usage limits, including the maximum filesize limit. |
| 948 | .Sh "Long doubles" |
| 949 | .IX Subsection "Long doubles" |
| 950 | In some systems you may be able to use long doubles to enhance the |
| 951 | range and precision of your double precision floating point numbers |
| 952 | (that is, Perl's numbers). Use Configure \-Duselongdouble to enable |
| 953 | this support (if it is available). |
| 954 | .ie n .Sh """more bits""" |
| 955 | .el .Sh "``more bits''" |
| 956 | .IX Subsection "more bits" |
| 957 | You can \*(L"Configure \-Dusemorebits\*(R" to turn on both the 64\-bit support |
| 958 | and the long double support. |
| 959 | .Sh "Enhanced support for \fIsort()\fP subroutines" |
| 960 | .IX Subsection "Enhanced support for sort() subroutines" |
| 961 | Perl subroutines with a prototype of \f(CW\*(C`($$)\*(C'\fR, and XSUBs in general, can |
| 962 | now be used as sort subroutines. In either case, the two elements to |
| 963 | be compared are passed as normal parameters in \f(CW@_\fR. See \*(L"sort\*(R" in perlfunc. |
| 964 | .PP |
| 965 | For unprototyped sort subroutines, the historical behavior of passing |
| 966 | the elements to be compared as the global variables \f(CW$a\fR and \f(CW$b\fR remains |
| 967 | unchanged. |
| 968 | .ie n .Sh """sort $coderef @foo"" allowed" |
| 969 | .el .Sh "\f(CWsort $coderef @foo\fP allowed" |
| 970 | .IX Subsection "sort $coderef @foo allowed" |
| 971 | \&\fIsort()\fR did not accept a subroutine reference as the comparison |
| 972 | function in earlier versions. This is now permitted. |
| 973 | .Sh "File globbing implemented internally" |
| 974 | .IX Subsection "File globbing implemented internally" |
| 975 | Perl now uses the File::Glob implementation of the \fIglob()\fR operator |
| 976 | automatically. This avoids using an external csh process and the |
| 977 | problems associated with it. |
| 978 | .PP |
| 979 | .Vb 2 |
| 980 | \& NOTE: This is currently an experimental feature. Interfaces and |
| 981 | \& implementation are subject to change. |
| 982 | .Ve |
| 983 | .Sh "Support for \s-1CHECK\s0 blocks" |
| 984 | .IX Subsection "Support for CHECK blocks" |
| 985 | In addition to \f(CW\*(C`BEGIN\*(C'\fR, \f(CW\*(C`INIT\*(C'\fR, \f(CW\*(C`END\*(C'\fR, \f(CW\*(C`DESTROY\*(C'\fR and \f(CW\*(C`AUTOLOAD\*(C'\fR, |
| 986 | subroutines named \f(CW\*(C`CHECK\*(C'\fR are now special. These are queued up during |
| 987 | compilation and behave similar to \s-1END\s0 blocks, except they are called at |
| 988 | the end of compilation rather than at the end of execution. They cannot |
| 989 | be called directly. |
| 990 | .Sh "\s-1POSIX\s0 character class syntax [: :] supported" |
| 991 | .IX Subsection "POSIX character class syntax [: :] supported" |
| 992 | For example to match alphabetic characters use /[[:alpha:]]/. |
| 993 | See perlre for details. |
| 994 | .Sh "Better pseudo-random number generator" |
| 995 | .IX Subsection "Better pseudo-random number generator" |
| 996 | In 5.005_0x and earlier, perl's \fIrand()\fR function used the C library |
| 997 | \&\fIrand\fR\|(3) function. As of 5.005_52, Configure tests for \fIdrand48()\fR, |
| 998 | \&\fIrandom()\fR, and \fIrand()\fR (in that order) and picks the first one it finds. |
| 999 | .PP |
| 1000 | These changes should result in better random numbers from \fIrand()\fR. |
| 1001 | .ie n .Sh "Improved ""qw//"" operator" |
| 1002 | .el .Sh "Improved \f(CWqw//\fP operator" |
| 1003 | .IX Subsection "Improved qw// operator" |
| 1004 | The \f(CW\*(C`qw//\*(C'\fR operator is now evaluated at compile time into a true list |
| 1005 | instead of being replaced with a run time call to \f(CW\*(C`split()\*(C'\fR. This |
| 1006 | removes the confusing misbehaviour of \f(CW\*(C`qw//\*(C'\fR in scalar context, which |
| 1007 | had inherited that behaviour from \fIsplit()\fR. |
| 1008 | .PP |
| 1009 | Thus: |
| 1010 | .PP |
| 1011 | .Vb 1 |
| 1012 | \& $foo = ($bar) = qw(a b c); print "$foo|$bar\en"; |
| 1013 | .Ve |
| 1014 | .PP |
| 1015 | now correctly prints \*(L"3|a\*(R", instead of \*(L"2|a\*(R". |
| 1016 | .Sh "Better worst-case behavior of hashes" |
| 1017 | .IX Subsection "Better worst-case behavior of hashes" |
| 1018 | Small changes in the hashing algorithm have been implemented in |
| 1019 | order to improve the distribution of lower order bits in the |
| 1020 | hashed value. This is expected to yield better performance on |
| 1021 | keys that are repeated sequences. |
| 1022 | .Sh "\fIpack()\fP format 'Z' supported" |
| 1023 | .IX Subsection "pack() format 'Z' supported" |
| 1024 | The new format type 'Z' is useful for packing and unpacking null-terminated |
| 1025 | strings. See \*(L"pack\*(R" in perlfunc. |
| 1026 | .Sh "\fIpack()\fP format modifier '!' supported" |
| 1027 | .IX Subsection "pack() format modifier '!' supported" |
| 1028 | The new format type modifier '!' is useful for packing and unpacking |
| 1029 | native shorts, ints, and longs. See \*(L"pack\*(R" in perlfunc. |
| 1030 | .Sh "\fIpack()\fP and \fIunpack()\fP support counted strings" |
| 1031 | .IX Subsection "pack() and unpack() support counted strings" |
| 1032 | The template character '/' can be used to specify a counted string |
| 1033 | type to be packed or unpacked. See \*(L"pack\*(R" in perlfunc. |
| 1034 | .Sh "Comments in \fIpack()\fP templates" |
| 1035 | .IX Subsection "Comments in pack() templates" |
| 1036 | The '#' character in a template introduces a comment up to |
| 1037 | end of the line. This facilitates documentation of \fIpack()\fR |
| 1038 | templates. |
| 1039 | .Sh "Weak references" |
| 1040 | .IX Subsection "Weak references" |
| 1041 | In previous versions of Perl, you couldn't cache objects so as |
| 1042 | to allow them to be deleted if the last reference from outside |
| 1043 | the cache is deleted. The reference in the cache would hold a |
| 1044 | reference count on the object and the objects would never be |
| 1045 | destroyed. |
| 1046 | .PP |
| 1047 | Another familiar problem is with circular references. When an |
| 1048 | object references itself, its reference count would never go |
| 1049 | down to zero, and it would not get destroyed until the program |
| 1050 | is about to exit. |
| 1051 | .PP |
| 1052 | Weak references solve this by allowing you to \*(L"weaken\*(R" any |
| 1053 | reference, that is, make it not count towards the reference count. |
| 1054 | When the last non-weak reference to an object is deleted, the object |
| 1055 | is destroyed and all the weak references to the object are |
| 1056 | automatically undef\-ed. |
| 1057 | .PP |
| 1058 | To use this feature, you need the Devel::WeakRef package from \s-1CPAN\s0, which |
| 1059 | contains additional documentation. |
| 1060 | .PP |
| 1061 | .Vb 1 |
| 1062 | \& NOTE: This is an experimental feature. Details are subject to change. |
| 1063 | .Ve |
| 1064 | .Sh "Binary numbers supported" |
| 1065 | .IX Subsection "Binary numbers supported" |
| 1066 | Binary numbers are now supported as literals, in s?printf formats, and |
| 1067 | \&\f(CW\*(C`oct()\*(C'\fR: |
| 1068 | .PP |
| 1069 | .Vb 2 |
| 1070 | \& $answer = 0b101010; |
| 1071 | \& printf "The answer is: %b\en", oct("0b101010"); |
| 1072 | .Ve |
| 1073 | .Sh "Lvalue subroutines" |
| 1074 | .IX Subsection "Lvalue subroutines" |
| 1075 | Subroutines can now return modifiable lvalues. |
| 1076 | See \*(L"Lvalue subroutines\*(R" in perlsub. |
| 1077 | .PP |
| 1078 | .Vb 1 |
| 1079 | \& NOTE: This is an experimental feature. Details are subject to change. |
| 1080 | .Ve |
| 1081 | .Sh "Some arrows may be omitted in calls through references" |
| 1082 | .IX Subsection "Some arrows may be omitted in calls through references" |
| 1083 | Perl now allows the arrow to be omitted in many constructs |
| 1084 | involving subroutine calls through references. For example, |
| 1085 | \&\f(CW\*(C`$foo[10]\->('foo')\*(C'\fR may now be written \f(CW\*(C`$foo[10]('foo')\*(C'\fR. |
| 1086 | This is rather similar to how the arrow may be omitted from |
| 1087 | \&\f(CW\*(C`$foo[10]\->{'foo'}\*(C'\fR. Note however, that the arrow is still |
| 1088 | required for \f(CW\*(C`foo(10)\->('bar')\*(C'\fR. |
| 1089 | .Sh "Boolean assignment operators are legal lvalues" |
| 1090 | .IX Subsection "Boolean assignment operators are legal lvalues" |
| 1091 | Constructs such as \f(CW\*(C`($a ||= 2) += 1\*(C'\fR are now allowed. |
| 1092 | .Sh "\fIexists()\fP is supported on subroutine names" |
| 1093 | .IX Subsection "exists() is supported on subroutine names" |
| 1094 | The \fIexists()\fR builtin now works on subroutine names. A subroutine |
| 1095 | is considered to exist if it has been declared (even if implicitly). |
| 1096 | See \*(L"exists\*(R" in perlfunc for examples. |
| 1097 | .Sh "\fIexists()\fP and \fIdelete()\fP are supported on array elements" |
| 1098 | .IX Subsection "exists() and delete() are supported on array elements" |
| 1099 | The \fIexists()\fR and \fIdelete()\fR builtins now work on simple arrays as well. |
| 1100 | The behavior is similar to that on hash elements. |
| 1101 | .PP |
| 1102 | \&\fIexists()\fR can be used to check whether an array element has been |
| 1103 | initialized. This avoids autovivifying array elements that don't exist. |
| 1104 | If the array is tied, the \s-1\fIEXISTS\s0()\fR method in the corresponding tied |
| 1105 | package will be invoked. |
| 1106 | .PP |
| 1107 | \&\fIdelete()\fR may be used to remove an element from the array and return |
| 1108 | it. The array element at that position returns to its uninitialized |
| 1109 | state, so that testing for the same element with \fIexists()\fR will return |
| 1110 | false. If the element happens to be the one at the end, the size of |
| 1111 | the array also shrinks up to the highest element that tests true for |
| 1112 | \&\fIexists()\fR, or 0 if none such is found. If the array is tied, the \s-1\fIDELETE\s0()\fR |
| 1113 | method in the corresponding tied package will be invoked. |
| 1114 | .PP |
| 1115 | See \*(L"exists\*(R" in perlfunc and \*(L"delete\*(R" in perlfunc for examples. |
| 1116 | .Sh "Pseudo-hashes work better" |
| 1117 | .IX Subsection "Pseudo-hashes work better" |
| 1118 | Dereferencing some types of reference values in a pseudo\-hash, |
| 1119 | such as \f(CW\*(C`$ph\->{foo}[1]\*(C'\fR, was accidentally disallowed. This has |
| 1120 | been corrected. |
| 1121 | .PP |
| 1122 | When applied to a pseudo-hash element, \fIexists()\fR now reports whether |
| 1123 | the specified value exists, not merely if the key is valid. |
| 1124 | .PP |
| 1125 | \&\fIdelete()\fR now works on pseudo\-hashes. When given a pseudo-hash element |
| 1126 | or slice it deletes the values corresponding to the keys (but not the keys |
| 1127 | themselves). See \*(L"Pseudo\-hashes: Using an array as a hash\*(R" in perlref. |
| 1128 | .PP |
| 1129 | Pseudo-hash slices with constant keys are now optimized to array lookups |
| 1130 | at compile\-time. |
| 1131 | .PP |
| 1132 | List assignments to pseudo-hash slices are now supported. |
| 1133 | .PP |
| 1134 | The \f(CW\*(C`fields\*(C'\fR pragma now provides ways to create pseudo\-hashes, via |
| 1135 | \&\fIfields::new()\fR and \fIfields::phash()\fR. See fields. |
| 1136 | .PP |
| 1137 | .Vb 3 |
| 1138 | \& NOTE: The pseudo-hash data type continues to be experimental. |
| 1139 | \& Limiting oneself to the interface elements provided by the |
| 1140 | \& fields pragma will provide protection from any future changes. |
| 1141 | .Ve |
| 1142 | .Sh "Automatic flushing of output buffers" |
| 1143 | .IX Subsection "Automatic flushing of output buffers" |
| 1144 | \&\fIfork()\fR, \fIexec()\fR, \fIsystem()\fR, qx//, and pipe \fIopen()\fRs now flush buffers |
| 1145 | of all files opened for output when the operation was attempted. This |
| 1146 | mostly eliminates confusing buffering mishaps suffered by users unaware |
| 1147 | of how Perl internally handles I/O. |
| 1148 | .PP |
| 1149 | This is not supported on some platforms like Solaris where a suitably |
| 1150 | correct implementation of fflush(\s-1NULL\s0) isn't available. |
| 1151 | .Sh "Better diagnostics on meaningless filehandle operations" |
| 1152 | .IX Subsection "Better diagnostics on meaningless filehandle operations" |
| 1153 | Constructs such as \f(CW\*(C`open(<FH>)\*(C'\fR and \f(CW\*(C`close(<FH>)\*(C'\fR |
| 1154 | are compile time errors. Attempting to read from filehandles that |
| 1155 | were opened only for writing will now produce warnings (just as |
| 1156 | writing to read-only filehandles does). |
| 1157 | .Sh "Where possible, buffered data discarded from duped input filehandle" |
| 1158 | .IX Subsection "Where possible, buffered data discarded from duped input filehandle" |
| 1159 | \&\f(CW\*(C`open(NEW, "<&OLD")\*(C'\fR now attempts to discard any data that |
| 1160 | was previously read and buffered in \f(CW\*(C`OLD\*(C'\fR before duping the handle. |
| 1161 | On platforms where doing this is allowed, the next read operation |
| 1162 | on \f(CW\*(C`NEW\*(C'\fR will return the same data as the corresponding operation |
| 1163 | on \f(CW\*(C`OLD\*(C'\fR. Formerly, it would have returned the data from the start |
| 1164 | of the following disk block instead. |
| 1165 | .Sh "\fIeof()\fP has the same old magic as <>" |
| 1166 | .IX Subsection "eof() has the same old magic as <>" |
| 1167 | \&\f(CW\*(C`eof()\*(C'\fR would return true if no attempt to read from \f(CW\*(C`<>\*(C'\fR had |
| 1168 | yet been made. \f(CW\*(C`eof()\*(C'\fR has been changed to have a little magic of its |
| 1169 | own, it now opens the \f(CW\*(C`<>\*(C'\fR files. |
| 1170 | .Sh "\fIbinmode()\fP can be used to set :crlf and :raw modes" |
| 1171 | .IX Subsection "binmode() can be used to set :crlf and :raw modes" |
| 1172 | \&\fIbinmode()\fR now accepts a second argument that specifies a discipline |
| 1173 | for the handle in question. The two pseudo-disciplines \*(L":raw\*(R" and |
| 1174 | \&\*(L":crlf\*(R" are currently supported on DOS-derivative platforms. |
| 1175 | See \*(L"binmode\*(R" in perlfunc and open. |
| 1176 | .ie n .Sh """\-T"" filetest recognizes \s-1UTF\-8\s0 encoded files as ""text""" |
| 1177 | .el .Sh "\f(CW\-T\fP filetest recognizes \s-1UTF\-8\s0 encoded files as ``text''" |
| 1178 | .IX Subsection "-T filetest recognizes UTF-8 encoded files as text" |
| 1179 | The algorithm used for the \f(CW\*(C`\-T\*(C'\fR filetest has been enhanced to |
| 1180 | correctly identify \s-1UTF\-8\s0 content as \*(L"text\*(R". |
| 1181 | .Sh "\fIsystem()\fP, backticks and pipe open now reflect \fIexec()\fP failure" |
| 1182 | .IX Subsection "system(), backticks and pipe open now reflect exec() failure" |
| 1183 | On Unix and similar platforms, \fIsystem()\fR, \fIqx()\fR and open(\s-1FOO\s0, \*(L"cmd |\*(R") |
| 1184 | etc., are implemented via \fIfork()\fR and \fIexec()\fR. When the underlying |
| 1185 | \&\fIexec()\fR fails, earlier versions did not report the error properly, |
| 1186 | since the \fIexec()\fR happened to be in a different process. |
| 1187 | .PP |
| 1188 | The child process now communicates with the parent about the |
| 1189 | error in launching the external command, which allows these |
| 1190 | constructs to return with their usual error value and set $!. |
| 1191 | .Sh "Improved diagnostics" |
| 1192 | .IX Subsection "Improved diagnostics" |
| 1193 | Line numbers are no longer suppressed (under most likely circumstances) |
| 1194 | during the global destruction phase. |
| 1195 | .PP |
| 1196 | Diagnostics emitted from code running in threads other than the main |
| 1197 | thread are now accompanied by the thread \s-1ID\s0. |
| 1198 | .PP |
| 1199 | Embedded null characters in diagnostics now actually show up. They |
| 1200 | used to truncate the message in prior versions. |
| 1201 | .PP |
| 1202 | $foo::a and \f(CW$foo::b\fR are now exempt from \*(L"possible typo\*(R" warnings only |
| 1203 | if \fIsort()\fR is encountered in package \f(CW\*(C`foo\*(C'\fR. |
| 1204 | .PP |
| 1205 | Unrecognized alphabetic escapes encountered when parsing quote |
| 1206 | constructs now generate a warning, since they may take on new |
| 1207 | semantics in later versions of Perl. |
| 1208 | .PP |
| 1209 | Many diagnostics now report the internal operation in which the warning |
| 1210 | was provoked, like so: |
| 1211 | .PP |
| 1212 | .Vb 2 |
| 1213 | \& Use of uninitialized value in concatenation (.) at (eval 1) line 1. |
| 1214 | \& Use of uninitialized value in print at (eval 1) line 1. |
| 1215 | .Ve |
| 1216 | .PP |
| 1217 | Diagnostics that occur within eval may also report the file and line |
| 1218 | number where the eval is located, in addition to the eval sequence |
| 1219 | number and the line number within the evaluated text itself. For |
| 1220 | example: |
| 1221 | .PP |
| 1222 | .Vb 1 |
| 1223 | \& Not enough arguments for scalar at (eval 4)[newlib/perl5db.pl:1411] line 2, at EOF |
| 1224 | .Ve |
| 1225 | .Sh "Diagnostics follow \s-1STDERR\s0" |
| 1226 | .IX Subsection "Diagnostics follow STDERR" |
| 1227 | Diagnostic output now goes to whichever file the \f(CW\*(C`STDERR\*(C'\fR handle |
| 1228 | is pointing at, instead of always going to the underlying C runtime |
| 1229 | library's \f(CW\*(C`stderr\*(C'\fR. |
| 1230 | .Sh "More consistent close-on-exec behavior" |
| 1231 | .IX Subsection "More consistent close-on-exec behavior" |
| 1232 | On systems that support a close-on-exec flag on filehandles, the |
| 1233 | flag is now set for any handles created by \fIpipe()\fR, \fIsocketpair()\fR, |
| 1234 | \&\fIsocket()\fR, and \fIaccept()\fR, if that is warranted by the value of $^F |
| 1235 | that may be in effect. Earlier versions neglected to set the flag |
| 1236 | for handles created with these operators. See \*(L"pipe\*(R" in perlfunc, |
| 1237 | \&\*(L"socketpair\*(R" in perlfunc, \*(L"socket\*(R" in perlfunc, \*(L"accept\*(R" in perlfunc, |
| 1238 | and \*(L"$^F\*(R" in perlvar. |
| 1239 | .Sh "\fIsyswrite()\fP ease-of-use" |
| 1240 | .IX Subsection "syswrite() ease-of-use" |
| 1241 | The length argument of \f(CW\*(C`syswrite()\*(C'\fR has become optional. |
| 1242 | .Sh "Better syntax checks on parenthesized unary operators" |
| 1243 | .IX Subsection "Better syntax checks on parenthesized unary operators" |
| 1244 | Expressions such as: |
| 1245 | .PP |
| 1246 | .Vb 3 |
| 1247 | \& print defined(&foo,&bar,&baz); |
| 1248 | \& print uc("foo","bar","baz"); |
| 1249 | \& undef($foo,&bar); |
| 1250 | .Ve |
| 1251 | .PP |
| 1252 | used to be accidentally allowed in earlier versions, and produced |
| 1253 | unpredictable behaviour. Some produced ancillary warnings |
| 1254 | when used in this way; others silently did the wrong thing. |
| 1255 | .PP |
| 1256 | The parenthesized forms of most unary operators that expect a single |
| 1257 | argument now ensure that they are not called with more than one |
| 1258 | argument, making the cases shown above syntax errors. The usual |
| 1259 | behaviour of: |
| 1260 | .PP |
| 1261 | .Vb 3 |
| 1262 | \& print defined &foo, &bar, &baz; |
| 1263 | \& print uc "foo", "bar", "baz"; |
| 1264 | \& undef $foo, &bar; |
| 1265 | .Ve |
| 1266 | .PP |
| 1267 | remains unchanged. See perlop. |
| 1268 | .Sh "Bit operators support full native integer width" |
| 1269 | .IX Subsection "Bit operators support full native integer width" |
| 1270 | The bit operators (& | ^ ~ << >>) now operate on the full native |
| 1271 | integral width (the exact size of which is available in \f(CW$Config\fR{ivsize}). |
| 1272 | For example, if your platform is either natively 64\-bit or if Perl |
| 1273 | has been configured to use 64\-bit integers, these operations apply |
| 1274 | to 8 bytes (as opposed to 4 bytes on 32\-bit platforms). |
| 1275 | For portability, be sure to mask off the excess bits in the result of |
| 1276 | unary \f(CW\*(C`~\*(C'\fR, e.g., \f(CW\*(C`~$x & 0xffffffff\*(C'\fR. |
| 1277 | .Sh "Improved security features" |
| 1278 | .IX Subsection "Improved security features" |
| 1279 | More potentially unsafe operations taint their results for improved |
| 1280 | security. |
| 1281 | .PP |
| 1282 | The \f(CW\*(C`passwd\*(C'\fR and \f(CW\*(C`shell\*(C'\fR fields returned by the \fIgetpwent()\fR, \fIgetpwnam()\fR, |
| 1283 | and \fIgetpwuid()\fR are now tainted, because the user can affect their own |
| 1284 | encrypted password and login shell. |
| 1285 | .PP |
| 1286 | The variable modified by \fIshmread()\fR, and messages returned by \fImsgrcv()\fR |
| 1287 | (and its object-oriented interface IPC::SysV::Msg::rcv) are also tainted, |
| 1288 | because other untrusted processes can modify messages and shared memory |
| 1289 | segments for their own nefarious purposes. |
| 1290 | .Sh "More functional bareword prototype (*)" |
| 1291 | .IX Subsection "More functional bareword prototype (*)" |
| 1292 | Bareword prototypes have been rationalized to enable them to be used |
| 1293 | to override builtins that accept barewords and interpret them in |
| 1294 | a special way, such as \f(CW\*(C`require\*(C'\fR or \f(CW\*(C`do\*(C'\fR. |
| 1295 | .PP |
| 1296 | Arguments prototyped as \f(CW\*(C`*\*(C'\fR will now be visible within the subroutine |
| 1297 | as either a simple scalar or as a reference to a typeglob. |
| 1298 | See \*(L"Prototypes\*(R" in perlsub. |
| 1299 | .ie n .Sh """require""\fP and \f(CW""do"" may be overridden" |
| 1300 | .el .Sh "\f(CWrequire\fP and \f(CWdo\fP may be overridden" |
| 1301 | .IX Subsection "require and do may be overridden" |
| 1302 | \&\f(CW\*(C`require\*(C'\fR and \f(CW\*(C`do 'file'\*(C'\fR operations may be overridden locally |
| 1303 | by importing subroutines of the same name into the current package |
| 1304 | (or globally by importing them into the \s-1CORE::GLOBAL::\s0 namespace). |
| 1305 | Overriding \f(CW\*(C`require\*(C'\fR will also affect \f(CW\*(C`use\*(C'\fR, provided the override |
| 1306 | is visible at compile\-time. |
| 1307 | See \*(L"Overriding Built-in Functions\*(R" in perlsub. |
| 1308 | .Sh "$^X variables may now have names longer than one character" |
| 1309 | .IX Subsection "$^X variables may now have names longer than one character" |
| 1310 | Formerly, $^X was synonymous with ${\*(L"\ecX\*(R"}, but $^XY was a syntax |
| 1311 | error. Now variable names that begin with a control character may be |
| 1312 | arbitrarily long. However, for compatibility reasons, these variables |
| 1313 | \&\fImust\fR be written with explicit braces, as \f(CW\*(C`${^XY}\*(C'\fR for example. |
| 1314 | \&\f(CW\*(C`${^XYZ}\*(C'\fR is synonymous with ${\*(L"\ecXYZ\*(R"}. Variable names with more |
| 1315 | than one control character, such as \f(CW\*(C`${^XY^Z}\*(C'\fR, are illegal. |
| 1316 | .PP |
| 1317 | The old syntax has not changed. As before, `^X' may be either a |
| 1318 | literal control-X character or the two-character sequence `caret' plus |
| 1319 | `X'. When braces are omitted, the variable name stops after the |
| 1320 | control character. Thus \f(CW"$^XYZ"\fR continues to be synonymous with |
| 1321 | \&\f(CW\*(C`$^X . "YZ"\*(C'\fR as before. |
| 1322 | .PP |
| 1323 | As before, lexical variables may not have names beginning with control |
| 1324 | characters. As before, variables whose names begin with a control |
| 1325 | character are always forced to be in package `main'. All such variables |
| 1326 | are reserved for future extensions, except those that begin with |
| 1327 | \&\f(CW\*(C`^_\*(C'\fR, which may be used by user programs and are guaranteed not to |
| 1328 | acquire special meaning in any future version of Perl. |
| 1329 | .ie n .Sh "New variable $^C reflects ""\-c"" switch" |
| 1330 | .el .Sh "New variable $^C reflects \f(CW\-c\fP switch" |
| 1331 | .IX Subsection "New variable $^C reflects -c switch" |
| 1332 | \&\f(CW$^C\fR has a boolean value that reflects whether perl is being run |
| 1333 | in compile-only mode (i.e. via the \f(CW\*(C`\-c\*(C'\fR switch). Since |
| 1334 | \&\s-1BEGIN\s0 blocks are executed under such conditions, this variable |
| 1335 | enables perl code to determine whether actions that make sense |
| 1336 | only during normal running are warranted. See perlvar. |
| 1337 | .Sh "New variable $^V contains Perl version as a string" |
| 1338 | .IX Subsection "New variable $^V contains Perl version as a string" |
| 1339 | \&\f(CW$^V\fR contains the Perl version number as a string composed of |
| 1340 | characters whose ordinals match the version numbers, i.e. v5.6.0. |
| 1341 | This may be used in string comparisons. |
| 1342 | .PP |
| 1343 | See \f(CW\*(C`Support for strings represented as a vector of ordinals\*(C'\fR for an |
| 1344 | example. |
| 1345 | .Sh "Optional Y2K warnings" |
| 1346 | .IX Subsection "Optional Y2K warnings" |
| 1347 | If Perl is built with the cpp macro \f(CW\*(C`PERL_Y2KWARN\*(C'\fR defined, |
| 1348 | it emits optional warnings when concatenating the number 19 |
| 1349 | with another number. |
| 1350 | .PP |
| 1351 | This behavior must be specifically enabled when running Configure. |
| 1352 | See \fI\s-1INSTALL\s0\fR and \fI\s-1README\s0.Y2K\fR. |
| 1353 | .Sh "Arrays now always interpolate into double-quoted strings" |
| 1354 | .IX Subsection "Arrays now always interpolate into double-quoted strings" |
| 1355 | In double-quoted strings, arrays now interpolate, no matter what. The |
| 1356 | behavior in earlier versions of perl 5 was that arrays would interpolate |
| 1357 | into strings if the array had been mentioned before the string was |
| 1358 | compiled, and otherwise Perl would raise a fatal compile-time error. |
| 1359 | In versions 5.000 through 5.003, the error was |
| 1360 | .PP |
| 1361 | .Vb 1 |
| 1362 | \& Literal @example now requires backslash |
| 1363 | .Ve |
| 1364 | .PP |
| 1365 | In versions 5.004_01 through 5.6.0, the error was |
| 1366 | .PP |
| 1367 | .Vb 1 |
| 1368 | \& In string, @example now must be written as \e@example |
| 1369 | .Ve |
| 1370 | .PP |
| 1371 | The idea here was to get people into the habit of writing |
| 1372 | \&\f(CW"fred\e@example.com"\fR when they wanted a literal \f(CW\*(C`@\*(C'\fR sign, just as |
| 1373 | they have always written \f(CW"Give me back my \e$5"\fR when they wanted a |
| 1374 | literal \f(CW\*(C`$\*(C'\fR sign. |
| 1375 | .PP |
| 1376 | Starting with 5.6.1, when Perl now sees an \f(CW\*(C`@\*(C'\fR sign in a |
| 1377 | double-quoted string, it \fIalways\fR attempts to interpolate an array, |
| 1378 | regardless of whether or not the array has been used or declared |
| 1379 | already. The fatal error has been downgraded to an optional warning: |
| 1380 | .PP |
| 1381 | .Vb 1 |
| 1382 | \& Possible unintended interpolation of @example in string |
| 1383 | .Ve |
| 1384 | .PP |
| 1385 | This warns you that \f(CW"fred@example.com"\fR is going to turn into |
| 1386 | \&\f(CW\*(C`fred.com\*(C'\fR if you don't backslash the \f(CW\*(C`@\*(C'\fR. |
| 1387 | See http://www.plover.com/~mjd/perl/at\-error.html for more details |
| 1388 | about the history here. |
| 1389 | .Sh "@\- and @+ provide starting/ending offsets of regex submatches" |
| 1390 | .IX Subsection "@- and @+ provide starting/ending offsets of regex submatches" |
| 1391 | The new magic variables @\- and @+ provide the starting and ending |
| 1392 | offsets, respectively, of $&, \f(CW$1\fR, \f(CW$2\fR, etc. See perlvar for |
| 1393 | details. |
| 1394 | .SH "Modules and Pragmata" |
| 1395 | .IX Header "Modules and Pragmata" |
| 1396 | .Sh "Modules" |
| 1397 | .IX Subsection "Modules" |
| 1398 | .IP "attributes" 4 |
| 1399 | .IX Item "attributes" |
| 1400 | While used internally by Perl as a pragma, this module also |
| 1401 | provides a way to fetch subroutine and variable attributes. |
| 1402 | See attributes. |
| 1403 | .IP "B" 4 |
| 1404 | .IX Item "B" |
| 1405 | The Perl Compiler suite has been extensively reworked for this |
| 1406 | release. More of the standard Perl testsuite passes when run |
| 1407 | under the Compiler, but there is still a significant way to |
| 1408 | go to achieve production quality compiled executables. |
| 1409 | .Sp |
| 1410 | .Vb 3 |
| 1411 | \& NOTE: The Compiler suite remains highly experimental. The |
| 1412 | \& generated code may not be correct, even when it manages to execute |
| 1413 | \& without errors. |
| 1414 | .Ve |
| 1415 | .IP "Benchmark" 4 |
| 1416 | .IX Item "Benchmark" |
| 1417 | Overall, Benchmark results exhibit lower average error and better timing |
| 1418 | accuracy. |
| 1419 | .Sp |
| 1420 | You can now run tests for \fIn\fR seconds instead of guessing the right |
| 1421 | number of tests to run: e.g., timethese(\-5, ...) will run each |
| 1422 | code for at least 5 \s-1CPU\s0 seconds. Zero as the \*(L"number of repetitions\*(R" |
| 1423 | means \*(L"for at least 3 \s-1CPU\s0 seconds\*(R". The output format has also |
| 1424 | changed. For example: |
| 1425 | .Sp |
| 1426 | .Vb 1 |
| 1427 | \& use Benchmark;$x=3;timethese(-5,{a=>sub{$x*$x},b=>sub{$x**2}}) |
| 1428 | .Ve |
| 1429 | .Sp |
| 1430 | will now output something like this: |
| 1431 | .Sp |
| 1432 | .Vb 3 |
| 1433 | \& Benchmark: running a, b, each for at least 5 CPU seconds... |
| 1434 | \& a: 5 wallclock secs ( 5.77 usr + 0.00 sys = 5.77 CPU) @ 200551.91/s (n=1156516) |
| 1435 | \& b: 4 wallclock secs ( 5.00 usr + 0.02 sys = 5.02 CPU) @ 159605.18/s (n=800686) |
| 1436 | .Ve |
| 1437 | .Sp |
| 1438 | New features: \*(L"each for at least N \s-1CPU\s0 seconds...\*(R", \*(L"wallclock secs\*(R", |
| 1439 | and the \*(L"@ operations/CPU second (n=operations)\*(R". |
| 1440 | .Sp |
| 1441 | \&\fItimethese()\fR now returns a reference to a hash of Benchmark objects containing |
| 1442 | the test results, keyed on the names of the tests. |
| 1443 | .Sp |
| 1444 | \&\fItimethis()\fR now returns the iterations field in the Benchmark result object |
| 1445 | instead of 0. |
| 1446 | .Sp |
| 1447 | \&\fItimethese()\fR, \fItimethis()\fR, and the new \fIcmpthese()\fR (see below) can also take |
| 1448 | a format specifier of 'none' to suppress output. |
| 1449 | .Sp |
| 1450 | A new function \fIcountit()\fR is just like \fItimeit()\fR except that it takes a |
| 1451 | \&\s-1TIME\s0 instead of a \s-1COUNT\s0. |
| 1452 | .Sp |
| 1453 | A new function \fIcmpthese()\fR prints a chart comparing the results of each test |
| 1454 | returned from a \fItimethese()\fR call. For each possible pair of tests, the |
| 1455 | percentage speed difference (iters/sec or seconds/iter) is shown. |
| 1456 | .Sp |
| 1457 | For other details, see Benchmark. |
| 1458 | .IP "ByteLoader" 4 |
| 1459 | .IX Item "ByteLoader" |
| 1460 | The ByteLoader is a dedicated extension to generate and run |
| 1461 | Perl bytecode. See ByteLoader. |
| 1462 | .IP "constant" 4 |
| 1463 | .IX Item "constant" |
| 1464 | References can now be used. |
| 1465 | .Sp |
| 1466 | The new version also allows a leading underscore in constant names, but |
| 1467 | disallows a double leading underscore (as in \*(L"_\|_LINE_\|_\*(R"). Some other names |
| 1468 | are disallowed or warned against, including \s-1BEGIN\s0, \s-1END\s0, etc. Some names |
| 1469 | which were forced into main:: used to fail silently in some cases; now they're |
| 1470 | fatal (outside of main::) and an optional warning (inside of main::). |
| 1471 | The ability to detect whether a constant had been set with a given name has |
| 1472 | been added. |
| 1473 | .Sp |
| 1474 | See constant. |
| 1475 | .IP "charnames" 4 |
| 1476 | .IX Item "charnames" |
| 1477 | This pragma implements the \f(CW\*(C`\eN\*(C'\fR string escape. See charnames. |
| 1478 | .IP "Data::Dumper" 4 |
| 1479 | .IX Item "Data::Dumper" |
| 1480 | A \f(CW\*(C`Maxdepth\*(C'\fR setting can be specified to avoid venturing |
| 1481 | too deeply into deep data structures. See Data::Dumper. |
| 1482 | .Sp |
| 1483 | The \s-1XSUB\s0 implementation of \fIDump()\fR is now automatically called if the |
| 1484 | \&\f(CW\*(C`Useqq\*(C'\fR setting is not in use. |
| 1485 | .Sp |
| 1486 | Dumping \f(CW\*(C`qr//\*(C'\fR objects works correctly. |
| 1487 | .IP "\s-1DB\s0" 4 |
| 1488 | .IX Item "DB" |
| 1489 | \&\f(CW\*(C`DB\*(C'\fR is an experimental module that exposes a clean abstraction |
| 1490 | to Perl's debugging \s-1API\s0. |
| 1491 | .IP "DB_File" 4 |
| 1492 | .IX Item "DB_File" |
| 1493 | DB_File can now be built with Berkeley \s-1DB\s0 versions 1, 2 or 3. |
| 1494 | See \f(CW\*(C`ext/DB_File/Changes\*(C'\fR. |
| 1495 | .IP "Devel::DProf" 4 |
| 1496 | .IX Item "Devel::DProf" |
| 1497 | Devel::DProf, a Perl source code profiler has been added. See |
| 1498 | Devel::DProf and dprofpp. |
| 1499 | .IP "Devel::Peek" 4 |
| 1500 | .IX Item "Devel::Peek" |
| 1501 | The Devel::Peek module provides access to the internal representation |
| 1502 | of Perl variables and data. It is a data debugging tool for the \s-1XS\s0 programmer. |
| 1503 | .IP "Dumpvalue" 4 |
| 1504 | .IX Item "Dumpvalue" |
| 1505 | The Dumpvalue module provides screen dumps of Perl data. |
| 1506 | .IP "DynaLoader" 4 |
| 1507 | .IX Item "DynaLoader" |
| 1508 | DynaLoader now supports a \fIdl_unload_file()\fR function on platforms that |
| 1509 | support unloading shared objects using \fIdlclose()\fR. |
| 1510 | .Sp |
| 1511 | Perl can also optionally arrange to unload all extension shared objects |
| 1512 | loaded by Perl. To enable this, build Perl with the Configure option |
| 1513 | \&\f(CW\*(C`\-Accflags=\-DDL_UNLOAD_ALL_AT_EXIT\*(C'\fR. (This maybe useful if you are |
| 1514 | using Apache with mod_perl.) |
| 1515 | .IP "English" 4 |
| 1516 | .IX Item "English" |
| 1517 | $PERL_VERSION now stands for \f(CW$^V\fR (a string value) rather than for \f(CW$]\fR |
| 1518 | (a numeric value). |
| 1519 | .IP "Env" 4 |
| 1520 | .IX Item "Env" |
| 1521 | Env now supports accessing environment variables like \s-1PATH\s0 as array |
| 1522 | variables. |
| 1523 | .IP "Fcntl" 4 |
| 1524 | .IX Item "Fcntl" |
| 1525 | More Fcntl constants added: F_SETLK64, F_SETLKW64, O_LARGEFILE for |
| 1526 | large file (more than 4GB) access (\s-1NOTE:\s0 the O_LARGEFILE is |
| 1527 | automatically added to \fIsysopen()\fR flags if large file support has been |
| 1528 | configured, as is the default), Free/Net/OpenBSD locking behaviour |
| 1529 | flags F_FLOCK, F_POSIX, Linux F_SHLCK, and O_ACCMODE: the combined |
| 1530 | mask of O_RDONLY, O_WRONLY, and O_RDWR. The \fIseek()\fR/\fIsysseek()\fR |
| 1531 | constants \s-1SEEK_SET\s0, \s-1SEEK_CUR\s0, and \s-1SEEK_END\s0 are available via the |
| 1532 | \&\f(CW\*(C`:seek\*(C'\fR tag. The \fIchmod()\fR/\fIstat()\fR S_IF* constants and S_IS* functions |
| 1533 | are available via the \f(CW\*(C`:mode\*(C'\fR tag. |
| 1534 | .IP "File::Compare" 4 |
| 1535 | .IX Item "File::Compare" |
| 1536 | A \fIcompare_text()\fR function has been added, which allows custom |
| 1537 | comparison functions. See File::Compare. |
| 1538 | .IP "File::Find" 4 |
| 1539 | .IX Item "File::Find" |
| 1540 | File::Find now works correctly when the \fIwanted()\fR function is either |
| 1541 | autoloaded or is a symbolic reference. |
| 1542 | .Sp |
| 1543 | A bug that caused File::Find to lose track of the working directory |
| 1544 | when pruning top-level directories has been fixed. |
| 1545 | .Sp |
| 1546 | File::Find now also supports several other options to control its |
| 1547 | behavior. It can follow symbolic links if the \f(CW\*(C`follow\*(C'\fR option is |
| 1548 | specified. Enabling the \f(CW\*(C`no_chdir\*(C'\fR option will make File::Find skip |
| 1549 | changing the current directory when walking directories. The \f(CW\*(C`untaint\*(C'\fR |
| 1550 | flag can be useful when running with taint checks enabled. |
| 1551 | .Sp |
| 1552 | See File::Find. |
| 1553 | .IP "File::Glob" 4 |
| 1554 | .IX Item "File::Glob" |
| 1555 | This extension implements BSD-style file globbing. By default, |
| 1556 | it will also be used for the internal implementation of the \fIglob()\fR |
| 1557 | operator. See File::Glob. |
| 1558 | .IP "File::Spec" 4 |
| 1559 | .IX Item "File::Spec" |
| 1560 | New methods have been added to the File::Spec module: \fIdevnull()\fR returns |
| 1561 | the name of the null device (/dev/null on Unix) and \fItmpdir()\fR the name of |
| 1562 | the temp directory (normally /tmp on Unix). There are now also methods |
| 1563 | to convert between absolute and relative filenames: \fIabs2rel()\fR and |
| 1564 | \&\fIrel2abs()\fR. For compatibility with operating systems that specify volume |
| 1565 | names in file paths, the \fIsplitpath()\fR, \fIsplitdir()\fR, and \fIcatdir()\fR methods |
| 1566 | have been added. |
| 1567 | .IP "File::Spec::Functions" 4 |
| 1568 | .IX Item "File::Spec::Functions" |
| 1569 | The new File::Spec::Functions modules provides a function interface |
| 1570 | to the File::Spec module. Allows shorthand |
| 1571 | .Sp |
| 1572 | .Vb 1 |
| 1573 | \& $fullname = catfile($dir1, $dir2, $file); |
| 1574 | .Ve |
| 1575 | .Sp |
| 1576 | instead of |
| 1577 | .Sp |
| 1578 | .Vb 1 |
| 1579 | \& $fullname = File::Spec->catfile($dir1, $dir2, $file); |
| 1580 | .Ve |
| 1581 | .IP "Getopt::Long" 4 |
| 1582 | .IX Item "Getopt::Long" |
| 1583 | Getopt::Long licensing has changed to allow the Perl Artistic License |
| 1584 | as well as the \s-1GPL\s0. It used to be \s-1GPL\s0 only, which got in the way of |
| 1585 | non-GPL applications that wanted to use Getopt::Long. |
| 1586 | .Sp |
| 1587 | Getopt::Long encourages the use of Pod::Usage to produce help |
| 1588 | messages. For example: |
| 1589 | .Sp |
| 1590 | .Vb 7 |
| 1591 | \& use Getopt::Long; |
| 1592 | \& use Pod::Usage; |
| 1593 | \& my $man = 0; |
| 1594 | \& my $help = 0; |
| 1595 | \& GetOptions('help|?' => \e$help, man => \e$man) or pod2usage(2); |
| 1596 | \& pod2usage(1) if $help; |
| 1597 | \& pod2usage(-exitstatus => 0, -verbose => 2) if $man; |
| 1598 | .Ve |
| 1599 | .Sp |
| 1600 | .Vb 1 |
| 1601 | \& __END__ |
| 1602 | .Ve |
| 1603 | .Sp |
| 1604 | .Vb 1 |
| 1605 | \& =head1 NAME |
| 1606 | .Ve |
| 1607 | .Sp |
| 1608 | .Vb 1 |
| 1609 | \& sample - Using Getopt::Long and Pod::Usage |
| 1610 | .Ve |
| 1611 | .Sp |
| 1612 | .Vb 1 |
| 1613 | \& =head1 SYNOPSIS |
| 1614 | .Ve |
| 1615 | .Sp |
| 1616 | .Vb 1 |
| 1617 | \& sample [options] [file ...] |
| 1618 | .Ve |
| 1619 | .Sp |
| 1620 | .Vb 3 |
| 1621 | \& Options: |
| 1622 | \& -help brief help message |
| 1623 | \& -man full documentation |
| 1624 | .Ve |
| 1625 | .Sp |
| 1626 | .Vb 1 |
| 1627 | \& =head1 OPTIONS |
| 1628 | .Ve |
| 1629 | .Sp |
| 1630 | .Vb 1 |
| 1631 | \& =over 8 |
| 1632 | .Ve |
| 1633 | .Sp |
| 1634 | .Vb 1 |
| 1635 | \& =item B<-help> |
| 1636 | .Ve |
| 1637 | .Sp |
| 1638 | .Vb 1 |
| 1639 | \& Print a brief help message and exits. |
| 1640 | .Ve |
| 1641 | .Sp |
| 1642 | .Vb 1 |
| 1643 | \& =item B<-man> |
| 1644 | .Ve |
| 1645 | .Sp |
| 1646 | .Vb 1 |
| 1647 | \& Prints the manual page and exits. |
| 1648 | .Ve |
| 1649 | .Sp |
| 1650 | .Vb 1 |
| 1651 | \& =back |
| 1652 | .Ve |
| 1653 | .Sp |
| 1654 | .Vb 1 |
| 1655 | \& =head1 DESCRIPTION |
| 1656 | .Ve |
| 1657 | .Sp |
| 1658 | .Vb 2 |
| 1659 | \& B<This program> will read the given input file(s) and do something |
| 1660 | \& useful with the contents thereof. |
| 1661 | .Ve |
| 1662 | .Sp |
| 1663 | .Vb 1 |
| 1664 | \& =cut |
| 1665 | .Ve |
| 1666 | .Sp |
| 1667 | See Pod::Usage for details. |
| 1668 | .Sp |
| 1669 | A bug that prevented the non-option call-back <> from being |
| 1670 | specified as the first argument has been fixed. |
| 1671 | .Sp |
| 1672 | To specify the characters < and > as option starters, use ><. Note, |
| 1673 | however, that changing option starters is strongly deprecated. |
| 1674 | .IP "\s-1IO\s0" 4 |
| 1675 | .IX Item "IO" |
| 1676 | \&\fIwrite()\fR and \fIsyswrite()\fR will now accept a single-argument |
| 1677 | form of the call, for consistency with Perl's \fIsyswrite()\fR. |
| 1678 | .Sp |
| 1679 | You can now create a TCP-based IO::Socket::INET without forcing |
| 1680 | a connect attempt. This allows you to configure its options |
| 1681 | (like making it non\-blocking) and then call \fIconnect()\fR manually. |
| 1682 | .Sp |
| 1683 | A bug that prevented the \fIIO::Socket::protocol()\fR accessor |
| 1684 | from ever returning the correct value has been corrected. |
| 1685 | .Sp |
| 1686 | IO::Socket::connect now uses non-blocking \s-1IO\s0 instead of \fIalarm()\fR |
| 1687 | to do connect timeouts. |
| 1688 | .Sp |
| 1689 | IO::Socket::accept now uses \fIselect()\fR instead of \fIalarm()\fR for doing |
| 1690 | timeouts. |
| 1691 | .Sp |
| 1692 | IO::Socket::INET\->new now sets $! correctly on failure. $@ is |
| 1693 | still set for backwards compatibility. |
| 1694 | .IP "\s-1JPL\s0" 4 |
| 1695 | .IX Item "JPL" |
| 1696 | Java Perl Lingo is now distributed with Perl. See jpl/README |
| 1697 | for more information. |
| 1698 | .IP "lib" 4 |
| 1699 | .IX Item "lib" |
| 1700 | \&\f(CW\*(C`use lib\*(C'\fR now weeds out any trailing duplicate entries. |
| 1701 | \&\f(CW\*(C`no lib\*(C'\fR removes all named entries. |
| 1702 | .IP "Math::BigInt" 4 |
| 1703 | .IX Item "Math::BigInt" |
| 1704 | The bitwise operations \f(CW\*(C`<<\*(C'\fR, \f(CW\*(C`>>\*(C'\fR, \f(CW\*(C`&\*(C'\fR, \f(CW\*(C`|\*(C'\fR, |
| 1705 | and \f(CW\*(C`~\*(C'\fR are now supported on bigints. |
| 1706 | .IP "Math::Complex" 4 |
| 1707 | .IX Item "Math::Complex" |
| 1708 | The accessor methods Re, Im, arg, abs, rho, and theta can now also |
| 1709 | act as mutators (accessor \f(CW$z\fR\->\fIRe()\fR, mutator \f(CW$z\fR\->\fIRe\fR\|(3)). |
| 1710 | .Sp |
| 1711 | The class method \f(CW\*(C`display_format\*(C'\fR and the corresponding object method |
| 1712 | \&\f(CW\*(C`display_format\*(C'\fR, in addition to accepting just one argument, now can |
| 1713 | also accept a parameter hash. Recognized keys of a parameter hash are |
| 1714 | \&\f(CW"style"\fR, which corresponds to the old one parameter case, and two |
| 1715 | new parameters: \f(CW"format"\fR, which is a \fIprintf()\fR\-style format string |
| 1716 | (defaults usually to \f(CW"%.15g"\fR, you can revert to the default by |
| 1717 | setting the format string to \f(CW\*(C`undef\*(C'\fR) used for both parts of a |
| 1718 | complex number, and \f(CW"polar_pretty_print"\fR (defaults to true), |
| 1719 | which controls whether an attempt is made to try to recognize small |
| 1720 | multiples and rationals of pi (2pi, pi/2) at the argument (angle) of a |
| 1721 | polar complex number. |
| 1722 | .Sp |
| 1723 | The potentially disruptive change is that in list context both methods |
| 1724 | now \fIreturn the parameter hash\fR, instead of only the value of the |
| 1725 | \&\f(CW"style"\fR parameter. |
| 1726 | .IP "Math::Trig" 4 |
| 1727 | .IX Item "Math::Trig" |
| 1728 | A little bit of radial trigonometry (cylindrical and spherical), |
| 1729 | radial coordinate conversions, and the great circle distance were added. |
| 1730 | .IP "Pod::Parser, Pod::InputObjects" 4 |
| 1731 | .IX Item "Pod::Parser, Pod::InputObjects" |
| 1732 | Pod::Parser is a base class for parsing and selecting sections of |
| 1733 | pod documentation from an input stream. This module takes care of |
| 1734 | identifying pod paragraphs and commands in the input and hands off the |
| 1735 | parsed paragraphs and commands to user-defined methods which are free |
| 1736 | to interpret or translate them as they see fit. |
| 1737 | .Sp |
| 1738 | Pod::InputObjects defines some input objects needed by Pod::Parser, and |
| 1739 | for advanced users of Pod::Parser that need more about a command besides |
| 1740 | its name and text. |
| 1741 | .Sp |
| 1742 | As of release 5.6.0 of Perl, Pod::Parser is now the officially sanctioned |
| 1743 | \&\*(L"base parser code\*(R" recommended for use by all pod2xxx translators. |
| 1744 | Pod::Text (pod2text) and Pod::Man (pod2man) have already been converted |
| 1745 | to use Pod::Parser and efforts to convert Pod::HTML (pod2html) are already |
| 1746 | underway. For any questions or comments about pod parsing and translating |
| 1747 | issues and utilities, please use the pod\-people@perl.org mailing list. |
| 1748 | .Sp |
| 1749 | For further information, please see Pod::Parser and Pod::InputObjects. |
| 1750 | .IP "Pod::Checker, podchecker" 4 |
| 1751 | .IX Item "Pod::Checker, podchecker" |
| 1752 | This utility checks pod files for correct syntax, according to |
| 1753 | perlpod. Obvious errors are flagged as such, while warnings are |
| 1754 | printed for mistakes that can be handled gracefully. The checklist is |
| 1755 | not complete yet. See Pod::Checker. |
| 1756 | .IP "Pod::ParseUtils, Pod::Find" 4 |
| 1757 | .IX Item "Pod::ParseUtils, Pod::Find" |
| 1758 | These modules provide a set of gizmos that are useful mainly for pod |
| 1759 | translators. Pod::Find traverses directory structures and |
| 1760 | returns found pod files, along with their canonical names (like |
| 1761 | \&\f(CW\*(C`File::Spec::Unix\*(C'\fR). Pod::ParseUtils contains |
| 1762 | \&\fBPod::List\fR (useful for storing pod list information), \fBPod::Hyperlink\fR |
| 1763 | (for parsing the contents of \f(CW\*(C`L<>\*(C'\fR sequences) and \fBPod::Cache\fR |
| 1764 | (for caching information about pod files, e.g., link nodes). |
| 1765 | .IP "Pod::Select, podselect" 4 |
| 1766 | .IX Item "Pod::Select, podselect" |
| 1767 | Pod::Select is a subclass of Pod::Parser which provides a function |
| 1768 | named \*(L"\fIpodselect()\fR\*(R" to filter out user-specified sections of raw pod |
| 1769 | documentation from an input stream. podselect is a script that provides |
| 1770 | access to Pod::Select from other scripts to be used as a filter. |
| 1771 | See Pod::Select. |
| 1772 | .IP "Pod::Usage, pod2usage" 4 |
| 1773 | .IX Item "Pod::Usage, pod2usage" |
| 1774 | Pod::Usage provides the function \*(L"\fIpod2usage()\fR\*(R" to print usage messages for |
| 1775 | a Perl script based on its embedded pod documentation. The \fIpod2usage()\fR |
| 1776 | function is generally useful to all script authors since it lets them |
| 1777 | write and maintain a single source (the pods) for documentation, thus |
| 1778 | removing the need to create and maintain redundant usage message text |
| 1779 | consisting of information already in the pods. |
| 1780 | .Sp |
| 1781 | There is also a pod2usage script which can be used from other kinds of |
| 1782 | scripts to print usage messages from pods (even for non-Perl scripts |
| 1783 | with pods embedded in comments). |
| 1784 | .Sp |
| 1785 | For details and examples, please see Pod::Usage. |
| 1786 | .IP "Pod::Text and Pod::Man" 4 |
| 1787 | .IX Item "Pod::Text and Pod::Man" |
| 1788 | Pod::Text has been rewritten to use Pod::Parser. While \fIpod2text()\fR is |
| 1789 | still available for backwards compatibility, the module now has a new |
| 1790 | preferred interface. See Pod::Text for the details. The new Pod::Text |
| 1791 | module is easily subclassed for tweaks to the output, and two such |
| 1792 | subclasses (Pod::Text::Termcap for man-page-style bold and underlining |
| 1793 | using termcap information, and Pod::Text::Color for markup with \s-1ANSI\s0 color |
| 1794 | sequences) are now standard. |
| 1795 | .Sp |
| 1796 | pod2man has been turned into a module, Pod::Man, which also uses |
| 1797 | Pod::Parser. In the process, several outstanding bugs related to quotes |
| 1798 | in section headers, quoting of code escapes, and nested lists have been |
| 1799 | fixed. pod2man is now a wrapper script around this module. |
| 1800 | .IP "SDBM_File" 4 |
| 1801 | .IX Item "SDBM_File" |
| 1802 | An \s-1EXISTS\s0 method has been added to this module (and \fIsdbm_exists()\fR has |
| 1803 | been added to the underlying sdbm library), so one can now call exists |
| 1804 | on an SDBM_File tied hash and get the correct result, rather than a |
| 1805 | runtime error. |
| 1806 | .Sp |
| 1807 | A bug that may have caused data loss when more than one disk block |
| 1808 | happens to be read from the database in a single \s-1\fIFETCH\s0()\fR has been |
| 1809 | fixed. |
| 1810 | .IP "Sys::Syslog" 4 |
| 1811 | .IX Item "Sys::Syslog" |
| 1812 | Sys::Syslog now uses XSUBs to access facilities from syslog.h so it |
| 1813 | no longer requires syslog.ph to exist. |
| 1814 | .IP "Sys::Hostname" 4 |
| 1815 | .IX Item "Sys::Hostname" |
| 1816 | Sys::Hostname now uses XSUBs to call the C library's \fIgethostname()\fR or |
| 1817 | \&\fIuname()\fR if they exist. |
| 1818 | .IP "Term::ANSIColor" 4 |
| 1819 | .IX Item "Term::ANSIColor" |
| 1820 | Term::ANSIColor is a very simple module to provide easy and readable |
| 1821 | access to the \s-1ANSI\s0 color and highlighting escape sequences, supported by |
| 1822 | most \s-1ANSI\s0 terminal emulators. It is now included standard. |
| 1823 | .IP "Time::Local" 4 |
| 1824 | .IX Item "Time::Local" |
| 1825 | The \fItimelocal()\fR and \fItimegm()\fR functions used to silently return bogus |
| 1826 | results when the date fell outside the machine's integer range. They |
| 1827 | now consistently \fIcroak()\fR if the date falls in an unsupported range. |
| 1828 | .IP "Win32" 4 |
| 1829 | .IX Item "Win32" |
| 1830 | The error return value in list context has been changed for all functions |
| 1831 | that return a list of values. Previously these functions returned a list |
| 1832 | with a single element \f(CW\*(C`undef\*(C'\fR if an error occurred. Now these functions |
| 1833 | return the empty list in these situations. This applies to the following |
| 1834 | functions: |
| 1835 | .Sp |
| 1836 | .Vb 2 |
| 1837 | \& Win32::FsType |
| 1838 | \& Win32::GetOSVersion |
| 1839 | .Ve |
| 1840 | .Sp |
| 1841 | The remaining functions are unchanged and continue to return \f(CW\*(C`undef\*(C'\fR on |
| 1842 | error even in list context. |
| 1843 | .Sp |
| 1844 | The Win32::SetLastError(\s-1ERROR\s0) function has been added as a complement |
| 1845 | to the \fIWin32::GetLastError()\fR function. |
| 1846 | .Sp |
| 1847 | The new Win32::GetFullPathName(\s-1FILENAME\s0) returns the full absolute |
| 1848 | pathname for \s-1FILENAME\s0 in scalar context. In list context it returns |
| 1849 | a two-element list containing the fully qualified directory name and |
| 1850 | the filename. See Win32. |
| 1851 | .IP "XSLoader" 4 |
| 1852 | .IX Item "XSLoader" |
| 1853 | The XSLoader extension is a simpler alternative to DynaLoader. |
| 1854 | See XSLoader. |
| 1855 | .IP "\s-1DBM\s0 Filters" 4 |
| 1856 | .IX Item "DBM Filters" |
| 1857 | A new feature called \*(L"\s-1DBM\s0 Filters\*(R" has been added to all the |
| 1858 | \&\s-1DBM\s0 modules\-\-DB_File, GDBM_File, NDBM_File, ODBM_File, and SDBM_File. |
| 1859 | \&\s-1DBM\s0 Filters add four new methods to each \s-1DBM\s0 module: |
| 1860 | .Sp |
| 1861 | .Vb 4 |
| 1862 | \& filter_store_key |
| 1863 | \& filter_store_value |
| 1864 | \& filter_fetch_key |
| 1865 | \& filter_fetch_value |
| 1866 | .Ve |
| 1867 | .Sp |
| 1868 | These can be used to filter key-value pairs before the pairs are |
| 1869 | written to the database or just after they are read from the database. |
| 1870 | See perldbmfilter for further information. |
| 1871 | .Sh "Pragmata" |
| 1872 | .IX Subsection "Pragmata" |
| 1873 | \&\f(CW\*(C`use attrs\*(C'\fR is now obsolete, and is only provided for |
| 1874 | backward\-compatibility. It's been replaced by the \f(CW\*(C`sub : attributes\*(C'\fR |
| 1875 | syntax. See \*(L"Subroutine Attributes\*(R" in perlsub and attributes. |
| 1876 | .PP |
| 1877 | Lexical warnings pragma, \f(CW\*(C`use warnings;\*(C'\fR, to control optional warnings. |
| 1878 | See perllexwarn. |
| 1879 | .PP |
| 1880 | \&\f(CW\*(C`use filetest\*(C'\fR to control the behaviour of filetests (\f(CW\*(C`\-r\*(C'\fR \f(CW\*(C`\-w\*(C'\fR |
| 1881 | \&...). Currently only one subpragma implemented, \*(L"use filetest |
| 1882 | \&'access';\*(R", that uses \fIaccess\fR\|(2) or equivalent to check permissions |
| 1883 | instead of using \fIstat\fR\|(2) as usual. This matters in filesystems |
| 1884 | where there are ACLs (access control lists): the \fIstat\fR\|(2) might lie, |
| 1885 | but \fIaccess\fR\|(2) knows better. |
| 1886 | .PP |
| 1887 | The \f(CW\*(C`open\*(C'\fR pragma can be used to specify default disciplines for |
| 1888 | handle constructors (e.g. \fIopen()\fR) and for qx//. The two |
| 1889 | pseudo-disciplines \f(CW\*(C`:raw\*(C'\fR and \f(CW\*(C`:crlf\*(C'\fR are currently supported on |
| 1890 | DOS-derivative platforms (i.e. where binmode is not a no\-op). |
| 1891 | See also \*(L"\fIbinmode()\fR can be used to set :crlf and :raw modes\*(R". |
| 1892 | .SH "Utility Changes" |
| 1893 | .IX Header "Utility Changes" |
| 1894 | .Sh "dprofpp" |
| 1895 | .IX Subsection "dprofpp" |
| 1896 | \&\f(CW\*(C`dprofpp\*(C'\fR is used to display profile data generated using \f(CW\*(C`Devel::DProf\*(C'\fR. |
| 1897 | See dprofpp. |
| 1898 | .Sh "find2perl" |
| 1899 | .IX Subsection "find2perl" |
| 1900 | The \f(CW\*(C`find2perl\*(C'\fR utility now uses the enhanced features of the File::Find |
| 1901 | module. The \-depth and \-follow options are supported. Pod documentation |
| 1902 | is also included in the script. |
| 1903 | .Sh "h2xs" |
| 1904 | .IX Subsection "h2xs" |
| 1905 | The \f(CW\*(C`h2xs\*(C'\fR tool can now work in conjunction with \f(CW\*(C`C::Scan\*(C'\fR (available |
| 1906 | from \s-1CPAN\s0) to automatically parse real-life header files. The \f(CW\*(C`\-M\*(C'\fR, |
| 1907 | \&\f(CW\*(C`\-a\*(C'\fR, \f(CW\*(C`\-k\*(C'\fR, and \f(CW\*(C`\-o\*(C'\fR options are new. |
| 1908 | .Sh "perlcc" |
| 1909 | .IX Subsection "perlcc" |
| 1910 | \&\f(CW\*(C`perlcc\*(C'\fR now supports the C and Bytecode backends. By default, |
| 1911 | it generates output from the simple C backend rather than the |
| 1912 | optimized C backend. |
| 1913 | .PP |
| 1914 | Support for non-Unix platforms has been improved. |
| 1915 | .Sh "perldoc" |
| 1916 | .IX Subsection "perldoc" |
| 1917 | \&\f(CW\*(C`perldoc\*(C'\fR has been reworked to avoid possible security holes. |
| 1918 | It will not by default let itself be run as the superuser, but you |
| 1919 | may still use the \fB\-U\fR switch to try to make it drop privileges |
| 1920 | first. |
| 1921 | .Sh "The Perl Debugger" |
| 1922 | .IX Subsection "The Perl Debugger" |
| 1923 | Many bug fixes and enhancements were added to \fIperl5db.pl\fR, the |
| 1924 | Perl debugger. The help documentation was rearranged. New commands |
| 1925 | include \f(CW\*(C`< ?\*(C'\fR, \f(CW\*(C`> ?\*(C'\fR, and \f(CW\*(C`{ ?\*(C'\fR to list out current |
| 1926 | actions, \f(CW\*(C`man \f(CIdocpage\f(CW\*(C'\fR to run your doc viewer on some perl |
| 1927 | docset, and support for quoted options. The help information was |
| 1928 | rearranged, and should be viewable once again if you're using \fBless\fR |
| 1929 | as your pager. A serious security hole was plugged\*(--you should |
| 1930 | immediately remove all older versions of the Perl debugger as |
| 1931 | installed in previous releases, all the way back to perl3, from |
| 1932 | your system to avoid being bitten by this. |
| 1933 | .SH "Improved Documentation" |
| 1934 | .IX Header "Improved Documentation" |
| 1935 | Many of the platform-specific \s-1README\s0 files are now part of the perl |
| 1936 | installation. See perl for the complete list. |
| 1937 | .IP "perlapi.pod" 4 |
| 1938 | .IX Item "perlapi.pod" |
| 1939 | The official list of public Perl \s-1API\s0 functions. |
| 1940 | .IP "perlboot.pod" 4 |
| 1941 | .IX Item "perlboot.pod" |
| 1942 | A tutorial for beginners on object-oriented Perl. |
| 1943 | .IP "perlcompile.pod" 4 |
| 1944 | .IX Item "perlcompile.pod" |
| 1945 | An introduction to using the Perl Compiler suite. |
| 1946 | .IP "perldbmfilter.pod" 4 |
| 1947 | .IX Item "perldbmfilter.pod" |
| 1948 | A howto document on using the \s-1DBM\s0 filter facility. |
| 1949 | .IP "perldebug.pod" 4 |
| 1950 | .IX Item "perldebug.pod" |
| 1951 | All material unrelated to running the Perl debugger, plus all |
| 1952 | low-level guts-like details that risked crushing the casual user |
| 1953 | of the debugger, have been relocated from the old manpage to the |
| 1954 | next entry below. |
| 1955 | .IP "perldebguts.pod" 4 |
| 1956 | .IX Item "perldebguts.pod" |
| 1957 | This new manpage contains excessively low-level material not related |
| 1958 | to the Perl debugger, but slightly related to debugging Perl itself. |
| 1959 | It also contains some arcane internal details of how the debugging |
| 1960 | process works that may only be of interest to developers of Perl |
| 1961 | debuggers. |
| 1962 | .IP "perlfork.pod" 4 |
| 1963 | .IX Item "perlfork.pod" |
| 1964 | Notes on the \fIfork()\fR emulation currently available for the Windows platform. |
| 1965 | .IP "perlfilter.pod" 4 |
| 1966 | .IX Item "perlfilter.pod" |
| 1967 | An introduction to writing Perl source filters. |
| 1968 | .IP "perlhack.pod" 4 |
| 1969 | .IX Item "perlhack.pod" |
| 1970 | Some guidelines for hacking the Perl source code. |
| 1971 | .IP "perlintern.pod" 4 |
| 1972 | .IX Item "perlintern.pod" |
| 1973 | A list of internal functions in the Perl source code. |
| 1974 | (List is currently empty.) |
| 1975 | .IP "perllexwarn.pod" 4 |
| 1976 | .IX Item "perllexwarn.pod" |
| 1977 | Introduction and reference information about lexically scoped |
| 1978 | warning categories. |
| 1979 | .IP "perlnumber.pod" 4 |
| 1980 | .IX Item "perlnumber.pod" |
| 1981 | Detailed information about numbers as they are represented in Perl. |
| 1982 | .IP "perlopentut.pod" 4 |
| 1983 | .IX Item "perlopentut.pod" |
| 1984 | A tutorial on using \fIopen()\fR effectively. |
| 1985 | .IP "perlreftut.pod" 4 |
| 1986 | .IX Item "perlreftut.pod" |
| 1987 | A tutorial that introduces the essentials of references. |
| 1988 | .IP "perltootc.pod" 4 |
| 1989 | .IX Item "perltootc.pod" |
| 1990 | A tutorial on managing class data for object modules. |
| 1991 | .IP "perltodo.pod" 4 |
| 1992 | .IX Item "perltodo.pod" |
| 1993 | Discussion of the most often wanted features that may someday be |
| 1994 | supported in Perl. |
| 1995 | .IP "perlunicode.pod" 4 |
| 1996 | .IX Item "perlunicode.pod" |
| 1997 | An introduction to Unicode support features in Perl. |
| 1998 | .SH "Performance enhancements" |
| 1999 | .IX Header "Performance enhancements" |
| 2000 | .ie n .Sh "Simple \fIsort()\fP using { $a\fP <=> \f(CW$b } and the like are optimized" |
| 2001 | .el .Sh "Simple \fIsort()\fP using { \f(CW$a\fP <=> \f(CW$b\fP } and the like are optimized" |
| 2002 | .IX Subsection "Simple sort() using { $a <=> $b } and the like are optimized" |
| 2003 | Many common \fIsort()\fR operations using a simple inlined block are now |
| 2004 | optimized for faster performance. |
| 2005 | .Sh "Optimized assignments to lexical variables" |
| 2006 | .IX Subsection "Optimized assignments to lexical variables" |
| 2007 | Certain operations in the \s-1RHS\s0 of assignment statements have been |
| 2008 | optimized to directly set the lexical variable on the \s-1LHS\s0, |
| 2009 | eliminating redundant copying overheads. |
| 2010 | .Sh "Faster subroutine calls" |
| 2011 | .IX Subsection "Faster subroutine calls" |
| 2012 | Minor changes in how subroutine calls are handled internally |
| 2013 | provide marginal improvements in performance. |
| 2014 | .Sh "\fIdelete()\fP, \fIeach()\fP, \fIvalues()\fP and hash iteration are faster" |
| 2015 | .IX Subsection "delete(), each(), values() and hash iteration are faster" |
| 2016 | The hash values returned by \fIdelete()\fR, \fIeach()\fR, \fIvalues()\fR and hashes in a |
| 2017 | list context are the actual values in the hash, instead of copies. |
| 2018 | This results in significantly better performance, because it eliminates |
| 2019 | needless copying in most situations. |
| 2020 | .SH "Installation and Configuration Improvements" |
| 2021 | .IX Header "Installation and Configuration Improvements" |
| 2022 | .Sh "\-Dusethreads means something different" |
| 2023 | .IX Subsection "-Dusethreads means something different" |
| 2024 | The \-Dusethreads flag now enables the experimental interpreter-based thread |
| 2025 | support by default. To get the flavor of experimental threads that was in |
| 2026 | 5.005 instead, you need to run Configure with \*(L"\-Dusethreads \-Duse5005threads\*(R". |
| 2027 | .PP |
| 2028 | As of v5.6.0, interpreter-threads support is still lacking a way to |
| 2029 | create new threads from Perl (i.e., \f(CW\*(C`use Thread;\*(C'\fR will not work with |
| 2030 | interpreter threads). \f(CW\*(C`use Thread;\*(C'\fR continues to be available when you |
| 2031 | specify the \-Duse5005threads option to Configure, bugs and all. |
| 2032 | .PP |
| 2033 | .Vb 2 |
| 2034 | \& NOTE: Support for threads continues to be an experimental feature. |
| 2035 | \& Interfaces and implementation are subject to sudden and drastic changes. |
| 2036 | .Ve |
| 2037 | .Sh "New Configure flags" |
| 2038 | .IX Subsection "New Configure flags" |
| 2039 | The following new flags may be enabled on the Configure command line |
| 2040 | by running Configure with \f(CW\*(C`\-Dflag\*(C'\fR. |
| 2041 | .PP |
| 2042 | .Vb 3 |
| 2043 | \& usemultiplicity |
| 2044 | \& usethreads useithreads (new interpreter threads: no Perl API yet) |
| 2045 | \& usethreads use5005threads (threads as they were in 5.005) |
| 2046 | .Ve |
| 2047 | .PP |
| 2048 | .Vb 2 |
| 2049 | \& use64bitint (equal to now deprecated 'use64bits') |
| 2050 | \& use64bitall |
| 2051 | .Ve |
| 2052 | .PP |
| 2053 | .Vb 4 |
| 2054 | \& uselongdouble |
| 2055 | \& usemorebits |
| 2056 | \& uselargefiles |
| 2057 | \& usesocks (only SOCKS v5 supported) |
| 2058 | .Ve |
| 2059 | .Sh "Threadedness and 64\-bitness now more daring" |
| 2060 | .IX Subsection "Threadedness and 64-bitness now more daring" |
| 2061 | The Configure options enabling the use of threads and the use of |
| 2062 | 64\-bitness are now more daring in the sense that they no more have an |
| 2063 | explicit list of operating systems of known threads/64\-bit |
| 2064 | capabilities. In other words: if your operating system has the |
| 2065 | necessary APIs and datatypes, you should be able just to go ahead and |
| 2066 | use them, for threads by Configure \-Dusethreads, and for 64 bits |
| 2067 | either explicitly by Configure \-Duse64bitint or implicitly if your |
| 2068 | system has 64\-bit wide datatypes. See also \*(L"64\-bit support\*(R". |
| 2069 | .Sh "Long Doubles" |
| 2070 | .IX Subsection "Long Doubles" |
| 2071 | Some platforms have \*(L"long doubles\*(R", floating point numbers of even |
| 2072 | larger range than ordinary \*(L"doubles\*(R". To enable using long doubles for |
| 2073 | Perl's scalars, use \-Duselongdouble. |
| 2074 | .Sh "\-Dusemorebits" |
| 2075 | .IX Subsection "-Dusemorebits" |
| 2076 | You can enable both \-Duse64bitint and \-Duselongdouble with \-Dusemorebits. |
| 2077 | See also \*(L"64\-bit support\*(R". |
| 2078 | .Sh "\-Duselargefiles" |
| 2079 | .IX Subsection "-Duselargefiles" |
| 2080 | Some platforms support system APIs that are capable of handling large files |
| 2081 | (typically, files larger than two gigabytes). Perl will try to use these |
| 2082 | APIs if you ask for \-Duselargefiles. |
| 2083 | .PP |
| 2084 | See \*(L"Large file support\*(R" for more information. |
| 2085 | .Sh "installusrbinperl" |
| 2086 | .IX Subsection "installusrbinperl" |
| 2087 | You can use \*(L"Configure \-Uinstallusrbinperl\*(R" which causes installperl |
| 2088 | to skip installing perl also as /usr/bin/perl. This is useful if you |
| 2089 | prefer not to modify /usr/bin for some reason or another but harmful |
| 2090 | because many scripts assume to find Perl in /usr/bin/perl. |
| 2091 | .Sh "\s-1SOCKS\s0 support" |
| 2092 | .IX Subsection "SOCKS support" |
| 2093 | You can use \*(L"Configure \-Dusesocks\*(R" which causes Perl to probe |
| 2094 | for the \s-1SOCKS\s0 proxy protocol library (v5, not v4). For more information |
| 2095 | on \s-1SOCKS\s0, see: |
| 2096 | .PP |
| 2097 | .Vb 1 |
| 2098 | \& http://www.socks.nec.com/ |
| 2099 | .Ve |
| 2100 | .ie n .Sh """\-A"" flag" |
| 2101 | .el .Sh "\f(CW\-A\fP flag" |
| 2102 | .IX Subsection "-A flag" |
| 2103 | You can \*(L"post\-edit\*(R" the Configure variables using the Configure \f(CW\*(C`\-A\*(C'\fR |
| 2104 | switch. The editing happens immediately after the platform specific |
| 2105 | hints files have been processed but before the actual configuration |
| 2106 | process starts. Run \f(CW\*(C`Configure \-h\*(C'\fR to find out the full \f(CW\*(C`\-A\*(C'\fR syntax. |
| 2107 | .Sh "Enhanced Installation Directories" |
| 2108 | .IX Subsection "Enhanced Installation Directories" |
| 2109 | The installation structure has been enriched to improve the support |
| 2110 | for maintaining multiple versions of perl, to provide locations for |
| 2111 | vendor-supplied modules, scripts, and manpages, and to ease maintenance |
| 2112 | of locally-added modules, scripts, and manpages. See the section on |
| 2113 | Installation Directories in the \s-1INSTALL\s0 file for complete details. |
| 2114 | For most users building and installing from source, the defaults should |
| 2115 | be fine. |
| 2116 | .PP |
| 2117 | If you previously used \f(CW\*(C`Configure \-Dsitelib\*(C'\fR or \f(CW\*(C`\-Dsitearch\*(C'\fR to set |
| 2118 | special values for library directories, you might wish to consider using |
| 2119 | the new \f(CW\*(C`\-Dsiteprefix\*(C'\fR setting instead. Also, if you wish to re-use a |
| 2120 | config.sh file from an earlier version of perl, you should be sure to |
| 2121 | check that Configure makes sensible choices for the new directories. |
| 2122 | See \s-1INSTALL\s0 for complete details. |
| 2123 | .Sh "gcc automatically tried if 'cc' does not seem to be working" |
| 2124 | .IX Subsection "gcc automatically tried if 'cc' does not seem to be working" |
| 2125 | In many platforms the vendor-supplied 'cc' is too stripped-down to |
| 2126 | build Perl (basically, the 'cc' doesn't do \s-1ANSI\s0 C). If this seems |
| 2127 | to be the case and the 'cc' does not seem to be the \s-1GNU\s0 C compiler |
| 2128 | \&'gcc', an automatic attempt is made to find and use 'gcc' instead. |
| 2129 | .SH "Platform specific changes" |
| 2130 | .IX Header "Platform specific changes" |
| 2131 | .Sh "Supported platforms" |
| 2132 | .IX Subsection "Supported platforms" |
| 2133 | .IP "\(bu" 4 |
| 2134 | The Mach CThreads (\s-1NEXTSTEP\s0, \s-1OPENSTEP\s0) are now supported by the Thread |
| 2135 | extension. |
| 2136 | .IP "\(bu" 4 |
| 2137 | GNU/Hurd is now supported. |
| 2138 | .IP "\(bu" 4 |
| 2139 | Rhapsody/Darwin is now supported. |
| 2140 | .IP "\(bu" 4 |
| 2141 | \&\s-1EPOC\s0 is now supported (on Psion 5). |
| 2142 | .IP "\(bu" 4 |
| 2143 | The cygwin port (formerly cygwin32) has been greatly improved. |
| 2144 | .Sh "\s-1DOS\s0" |
| 2145 | .IX Subsection "DOS" |
| 2146 | .IP "\(bu" 4 |
| 2147 | Perl now works with djgpp 2.02 (and 2.03 alpha). |
| 2148 | .IP "\(bu" 4 |
| 2149 | Environment variable names are not converted to uppercase any more. |
| 2150 | .IP "\(bu" 4 |
| 2151 | Incorrect exit codes from backticks have been fixed. |
| 2152 | .IP "\(bu" 4 |
| 2153 | This port continues to use its own builtin globbing (not File::Glob). |
| 2154 | .Sh "\s-1OS390\s0 (OpenEdition \s-1MVS\s0)" |
| 2155 | .IX Subsection "OS390 (OpenEdition MVS)" |
| 2156 | Support for this \s-1EBCDIC\s0 platform has not been renewed in this release. |
| 2157 | There are difficulties in reconciling Perl's standardization on \s-1UTF\-8\s0 |
| 2158 | as its internal representation for characters with the \s-1EBCDIC\s0 character |
| 2159 | set, because the two are incompatible. |
| 2160 | .PP |
| 2161 | It is unclear whether future versions will renew support for this |
| 2162 | platform, but the possibility exists. |
| 2163 | .Sh "\s-1VMS\s0" |
| 2164 | .IX Subsection "VMS" |
| 2165 | Numerous revisions and extensions to configuration, build, testing, and |
| 2166 | installation process to accommodate core changes and VMS-specific options. |
| 2167 | .PP |
| 2168 | Expand \f(CW%ENV\fR\-handling code to allow runtime mapping to logical names, |
| 2169 | \&\s-1CLI\s0 symbols, and \s-1CRTL\s0 environ array. |
| 2170 | .PP |
| 2171 | Extension of subprocess invocation code to accept filespecs as command |
| 2172 | \&\*(L"verbs\*(R". |
| 2173 | .PP |
| 2174 | Add to Perl command line processing the ability to use default file types and |
| 2175 | to recognize Unix-style \f(CW\*(C`2>&1\*(C'\fR. |
| 2176 | .PP |
| 2177 | Expansion of File::Spec::VMS routines, and integration into ExtUtils::MM_VMS. |
| 2178 | .PP |
| 2179 | Extension of ExtUtils::MM_VMS to handle complex extensions more flexibly. |
| 2180 | .PP |
| 2181 | Barewords at start of Unix-syntax paths may be treated as text rather than |
| 2182 | only as logical names. |
| 2183 | .PP |
| 2184 | Optional secure translation of several logical names used internally by Perl. |
| 2185 | .PP |
| 2186 | Miscellaneous bugfixing and porting of new core code to \s-1VMS\s0. |
| 2187 | .PP |
| 2188 | Thanks are gladly extended to the many people who have contributed \s-1VMS\s0 |
| 2189 | patches, testing, and ideas. |
| 2190 | .Sh "Win32" |
| 2191 | .IX Subsection "Win32" |
| 2192 | Perl can now emulate \fIfork()\fR internally, using multiple interpreters running |
| 2193 | in different concurrent threads. This support must be enabled at build |
| 2194 | time. See perlfork for detailed information. |
| 2195 | .PP |
| 2196 | When given a pathname that consists only of a drivename, such as \f(CW\*(C`A:\*(C'\fR, |
| 2197 | \&\fIopendir()\fR and \fIstat()\fR now use the current working directory for the drive |
| 2198 | rather than the drive root. |
| 2199 | .PP |
| 2200 | The builtin \s-1XSUB\s0 functions in the Win32:: namespace are documented. See |
| 2201 | Win32. |
| 2202 | .PP |
| 2203 | $^X now contains the full path name of the running executable. |
| 2204 | .PP |
| 2205 | A \fIWin32::GetLongPathName()\fR function is provided to complement |
| 2206 | \&\fIWin32::GetFullPathName()\fR and \fIWin32::GetShortPathName()\fR. See Win32. |
| 2207 | .PP |
| 2208 | \&\fIPOSIX::uname()\fR is supported. |
| 2209 | .PP |
| 2210 | system(1,...) now returns true process IDs rather than process |
| 2211 | handles. \fIkill()\fR accepts any real process id, rather than strictly |
| 2212 | return values from system(1,...). |
| 2213 | .PP |
| 2214 | For better compatibility with Unix, \f(CW\*(C`kill(0, $pid)\*(C'\fR can now be used to |
| 2215 | test whether a process exists. |
| 2216 | .PP |
| 2217 | The \f(CW\*(C`Shell\*(C'\fR module is supported. |
| 2218 | .PP |
| 2219 | Better support for building Perl under command.com in Windows 95 |
| 2220 | has been added. |
| 2221 | .PP |
| 2222 | Scripts are read in binary mode by default to allow ByteLoader (and |
| 2223 | the filter mechanism in general) to work properly. For compatibility, |
| 2224 | the \s-1DATA\s0 filehandle will be set to text mode if a carriage return is |
| 2225 | detected at the end of the line containing the _\|_END_\|_ or _\|_DATA_\|_ |
| 2226 | token; if not, the \s-1DATA\s0 filehandle will be left open in binary mode. |
| 2227 | Earlier versions always opened the \s-1DATA\s0 filehandle in text mode. |
| 2228 | .PP |
| 2229 | The \fIglob()\fR operator is implemented via the \f(CW\*(C`File::Glob\*(C'\fR extension, |
| 2230 | which supports glob syntax of the C shell. This increases the flexibility |
| 2231 | of the \fIglob()\fR operator, but there may be compatibility issues for |
| 2232 | programs that relied on the older globbing syntax. If you want to |
| 2233 | preserve compatibility with the older syntax, you might want to run |
| 2234 | perl with \f(CW\*(C`\-MFile::DosGlob\*(C'\fR. For details and compatibility information, |
| 2235 | see File::Glob. |
| 2236 | .SH "Significant bug fixes" |
| 2237 | .IX Header "Significant bug fixes" |
| 2238 | .Sh "<\s-1HANDLE\s0> on empty files" |
| 2239 | .IX Subsection "<HANDLE> on empty files" |
| 2240 | With \f(CW$/\fR set to \f(CW\*(C`undef\*(C'\fR, \*(L"slurping\*(R" an empty file returns a string of |
| 2241 | zero length (instead of \f(CW\*(C`undef\*(C'\fR, as it used to) the first time the |
| 2242 | \&\s-1HANDLE\s0 is read after \f(CW$/\fR is set to \f(CW\*(C`undef\*(C'\fR. Further reads yield |
| 2243 | \&\f(CW\*(C`undef\*(C'\fR. |
| 2244 | .PP |
| 2245 | This means that the following will append \*(L"foo\*(R" to an empty file (it used |
| 2246 | to do nothing): |
| 2247 | .PP |
| 2248 | .Vb 1 |
| 2249 | \& perl -0777 -pi -e 's/^/foo/' empty_file |
| 2250 | .Ve |
| 2251 | .PP |
| 2252 | The behaviour of: |
| 2253 | .PP |
| 2254 | .Vb 1 |
| 2255 | \& perl -pi -e 's/^/foo/' empty_file |
| 2256 | .Ve |
| 2257 | .PP |
| 2258 | is unchanged (it continues to leave the file empty). |
| 2259 | .ie n .Sh """eval '...'"" improvements" |
| 2260 | .el .Sh "\f(CWeval '...'\fP improvements" |
| 2261 | .IX Subsection "eval '...' improvements" |
| 2262 | Line numbers (as reflected by \fIcaller()\fR and most diagnostics) within |
| 2263 | \&\f(CW\*(C`eval '...'\*(C'\fR were often incorrect where here documents were involved. |
| 2264 | This has been corrected. |
| 2265 | .PP |
| 2266 | Lexical lookups for variables appearing in \f(CW\*(C`eval '...'\*(C'\fR within |
| 2267 | functions that were themselves called within an \f(CW\*(C`eval '...'\*(C'\fR were |
| 2268 | searching the wrong place for lexicals. The lexical search now |
| 2269 | correctly ends at the subroutine's block boundary. |
| 2270 | .PP |
| 2271 | The use of \f(CW\*(C`return\*(C'\fR within \f(CW\*(C`eval {...}\*(C'\fR caused $@ not to be reset |
| 2272 | correctly when no exception occurred within the eval. This has |
| 2273 | been fixed. |
| 2274 | .PP |
| 2275 | Parsing of here documents used to be flawed when they appeared as |
| 2276 | the replacement expression in \f(CW\*(C`eval 's/.../.../e'\*(C'\fR. This has |
| 2277 | been fixed. |
| 2278 | .Sh "All compilation errors are true errors" |
| 2279 | .IX Subsection "All compilation errors are true errors" |
| 2280 | Some \*(L"errors\*(R" encountered at compile time were by necessity |
| 2281 | generated as warnings followed by eventual termination of the |
| 2282 | program. This enabled more such errors to be reported in a |
| 2283 | single run, rather than causing a hard stop at the first error |
| 2284 | that was encountered. |
| 2285 | .PP |
| 2286 | The mechanism for reporting such errors has been reimplemented |
| 2287 | to queue compile-time errors and report them at the end of the |
| 2288 | compilation as true errors rather than as warnings. This fixes |
| 2289 | cases where error messages leaked through in the form of warnings |
| 2290 | when code was compiled at run time using \f(CW\*(C`eval STRING\*(C'\fR, and |
| 2291 | also allows such errors to be reliably trapped using \f(CW\*(C`eval "..."\*(C'\fR. |
| 2292 | .Sh "Implicitly closed filehandles are safer" |
| 2293 | .IX Subsection "Implicitly closed filehandles are safer" |
| 2294 | Sometimes implicitly closed filehandles (as when they are localized, |
| 2295 | and Perl automatically closes them on exiting the scope) could |
| 2296 | inadvertently set $? or $!. This has been corrected. |
| 2297 | .Sh "Behavior of list slices is more consistent" |
| 2298 | .IX Subsection "Behavior of list slices is more consistent" |
| 2299 | When taking a slice of a literal list (as opposed to a slice of |
| 2300 | an array or hash), Perl used to return an empty list if the |
| 2301 | result happened to be composed of all undef values. |
| 2302 | .PP |
| 2303 | The new behavior is to produce an empty list if (and only if) |
| 2304 | the original list was empty. Consider the following example: |
| 2305 | .PP |
| 2306 | .Vb 1 |
| 2307 | \& @a = (1,undef,undef,2)[2,1,2]; |
| 2308 | .Ve |
| 2309 | .PP |
| 2310 | The old behavior would have resulted in \f(CW@a\fR having no elements. |
| 2311 | The new behavior ensures it has three undefined elements. |
| 2312 | .PP |
| 2313 | Note in particular that the behavior of slices of the following |
| 2314 | cases remains unchanged: |
| 2315 | .PP |
| 2316 | .Vb 5 |
| 2317 | \& @a = ()[1,2]; |
| 2318 | \& @a = (getpwent)[7,0]; |
| 2319 | \& @a = (anything_returning_empty_list())[2,1,2]; |
| 2320 | \& @a = @b[2,1,2]; |
| 2321 | \& @a = @c{'a','b','c'}; |
| 2322 | .Ve |
| 2323 | .PP |
| 2324 | See perldata. |
| 2325 | .ie n .Sh """(\e$)""\fP prototype and \f(CW$foo{a}" |
| 2326 | .el .Sh "\f(CW(\e$)\fP prototype and \f(CW$foo{a}\fP" |
| 2327 | .IX Subsection "($) prototype and $foo{a}" |
| 2328 | A scalar reference prototype now correctly allows a hash or |
| 2329 | array element in that slot. |
| 2330 | .ie n .Sh """goto &sub"" and \s-1AUTOLOAD\s0" |
| 2331 | .el .Sh "\f(CWgoto &sub\fP and \s-1AUTOLOAD\s0" |
| 2332 | .IX Subsection "goto &sub and AUTOLOAD" |
| 2333 | The \f(CW\*(C`goto &sub\*(C'\fR construct works correctly when \f(CW&sub\fR happens |
| 2334 | to be autoloaded. |
| 2335 | .ie n .Sh """\-bareword""\fP allowed under \f(CW""use integer""" |
| 2336 | .el .Sh "\f(CW\-bareword\fP allowed under \f(CWuse integer\fP" |
| 2337 | .IX Subsection "-bareword allowed under use integer" |
| 2338 | The autoquoting of barewords preceded by \f(CW\*(C`\-\*(C'\fR did not work |
| 2339 | in prior versions when the \f(CW\*(C`integer\*(C'\fR pragma was enabled. |
| 2340 | This has been fixed. |
| 2341 | .Sh "Failures in \s-1\fIDESTROY\s0()\fP" |
| 2342 | .IX Subsection "Failures in DESTROY()" |
| 2343 | When code in a destructor threw an exception, it went unnoticed |
| 2344 | in earlier versions of Perl, unless someone happened to be |
| 2345 | looking in $@ just after the point the destructor happened to |
| 2346 | run. Such failures are now visible as warnings when warnings are |
| 2347 | enabled. |
| 2348 | .Sh "Locale bugs fixed" |
| 2349 | .IX Subsection "Locale bugs fixed" |
| 2350 | \&\fIprintf()\fR and \fIsprintf()\fR previously reset the numeric locale |
| 2351 | back to the default \*(L"C\*(R" locale. This has been fixed. |
| 2352 | .PP |
| 2353 | Numbers formatted according to the local numeric locale |
| 2354 | (such as using a decimal comma instead of a decimal dot) caused |
| 2355 | \&\*(L"isn't numeric\*(R" warnings, even while the operations accessing |
| 2356 | those numbers produced correct results. These warnings have been |
| 2357 | discontinued. |
| 2358 | .Sh "Memory leaks" |
| 2359 | .IX Subsection "Memory leaks" |
| 2360 | The \f(CW\*(C`eval 'return sub {...}'\*(C'\fR construct could sometimes leak |
| 2361 | memory. This has been fixed. |
| 2362 | .PP |
| 2363 | Operations that aren't filehandle constructors used to leak memory |
| 2364 | when used on invalid filehandles. This has been fixed. |
| 2365 | .PP |
| 2366 | Constructs that modified \f(CW@_\fR could fail to deallocate values |
| 2367 | in \f(CW@_\fR and thus leak memory. This has been corrected. |
| 2368 | .Sh "Spurious subroutine stubs after failed subroutine calls" |
| 2369 | .IX Subsection "Spurious subroutine stubs after failed subroutine calls" |
| 2370 | Perl could sometimes create empty subroutine stubs when a |
| 2371 | subroutine was not found in the package. Such cases stopped |
| 2372 | later method lookups from progressing into base packages. |
| 2373 | This has been corrected. |
| 2374 | .ie n .Sh "Taint failures under ""\-U""" |
| 2375 | .el .Sh "Taint failures under \f(CW\-U\fP" |
| 2376 | .IX Subsection "Taint failures under -U" |
| 2377 | When running in unsafe mode, taint violations could sometimes |
| 2378 | cause silent failures. This has been fixed. |
| 2379 | .ie n .Sh "\s-1END\s0 blocks and the ""\-c"" switch" |
| 2380 | .el .Sh "\s-1END\s0 blocks and the \f(CW\-c\fP switch" |
| 2381 | .IX Subsection "END blocks and the -c switch" |
| 2382 | Prior versions used to run \s-1BEGIN\s0 \fBand\fR \s-1END\s0 blocks when Perl was |
| 2383 | run in compile-only mode. Since this is typically not the expected |
| 2384 | behavior, \s-1END\s0 blocks are not executed anymore when the \f(CW\*(C`\-c\*(C'\fR switch |
| 2385 | is used, or if compilation fails. |
| 2386 | .PP |
| 2387 | See \*(L"Support for \s-1CHECK\s0 blocks\*(R" for how to run things when the compile |
| 2388 | phase ends. |
| 2389 | .Sh "Potential to leak \s-1DATA\s0 filehandles" |
| 2390 | .IX Subsection "Potential to leak DATA filehandles" |
| 2391 | Using the \f(CW\*(C`_\|_DATA_\|_\*(C'\fR token creates an implicit filehandle to |
| 2392 | the file that contains the token. It is the program's |
| 2393 | responsibility to close it when it is done reading from it. |
| 2394 | .PP |
| 2395 | This caveat is now better explained in the documentation. |
| 2396 | See perldata. |
| 2397 | .SH "New or Changed Diagnostics" |
| 2398 | .IX Header "New or Changed Diagnostics" |
| 2399 | .ie n .IP """%s"" variable %s\fR masks earlier declaration in same \f(CW%s" 4 |
| 2400 | .el .IP "``%s'' variable \f(CW%s\fR masks earlier declaration in same \f(CW%s\fR" 4 |
| 2401 | .IX Item "%s variable %s masks earlier declaration in same %s" |
| 2402 | (W misc) A \*(L"my\*(R" or \*(L"our\*(R" variable has been redeclared in the current scope or statement, |
| 2403 | effectively eliminating all access to the previous instance. This is almost |
| 2404 | always a typographical error. Note that the earlier variable will still exist |
| 2405 | until the end of the scope or until all closure referents to it are |
| 2406 | destroyed. |
| 2407 | .ie n .IP """my sub"" not yet implemented" 4 |
| 2408 | .el .IP "``my sub'' not yet implemented" 4 |
| 2409 | .IX Item "my sub not yet implemented" |
| 2410 | (F) Lexically scoped subroutines are not yet implemented. Don't try that |
| 2411 | yet. |
| 2412 | .ie n .IP """our"" variable %s redeclared" 4 |
| 2413 | .el .IP "``our'' variable \f(CW%s\fR redeclared" 4 |
| 2414 | .IX Item "our variable %s redeclared" |
| 2415 | (W misc) You seem to have already declared the same global once before in the |
| 2416 | current lexical scope. |
| 2417 | .ie n .IP "'!' allowed only after types %s" 4 |
| 2418 | .el .IP "'!' allowed only after types \f(CW%s\fR" 4 |
| 2419 | .IX Item "'!' allowed only after types %s" |
| 2420 | (F) The '!' is allowed in \fIpack()\fR and \fIunpack()\fR only after certain types. |
| 2421 | See \*(L"pack\*(R" in perlfunc. |
| 2422 | .IP "/ cannot take a count" 4 |
| 2423 | .IX Item "/ cannot take a count" |
| 2424 | (F) You had an unpack template indicating a counted-length string, |
| 2425 | but you have also specified an explicit size for the string. |
| 2426 | See \*(L"pack\*(R" in perlfunc. |
| 2427 | .IP "/ must be followed by a, A or Z" 4 |
| 2428 | .IX Item "/ must be followed by a, A or Z" |
| 2429 | (F) You had an unpack template indicating a counted-length string, |
| 2430 | which must be followed by one of the letters a, A or Z |
| 2431 | to indicate what sort of string is to be unpacked. |
| 2432 | See \*(L"pack\*(R" in perlfunc. |
| 2433 | .IP "/ must be followed by a*, A* or Z*" 4 |
| 2434 | .IX Item "/ must be followed by a*, A* or Z*" |
| 2435 | (F) You had a pack template indicating a counted-length string, |
| 2436 | Currently the only things that can have their length counted are a*, A* or Z*. |
| 2437 | See \*(L"pack\*(R" in perlfunc. |
| 2438 | .IP "/ must follow a numeric type" 4 |
| 2439 | .IX Item "/ must follow a numeric type" |
| 2440 | (F) You had an unpack template that contained a '#', |
| 2441 | but this did not follow some numeric unpack specification. |
| 2442 | See \*(L"pack\*(R" in perlfunc. |
| 2443 | .IP "/%s/: Unrecognized escape \e\e%c passed through" 4 |
| 2444 | .IX Item "/%s/: Unrecognized escape %c passed through" |
| 2445 | (W regexp) You used a backslash-character combination which is not recognized |
| 2446 | by Perl. This combination appears in an interpolated variable or a |
| 2447 | \&\f(CW\*(C`'\*(C'\fR\-delimited regular expression. The character was understood literally. |
| 2448 | .IP "/%s/: Unrecognized escape \e\e%c in character class passed through" 4 |
| 2449 | .IX Item "/%s/: Unrecognized escape %c in character class passed through" |
| 2450 | (W regexp) You used a backslash-character combination which is not recognized |
| 2451 | by Perl inside character classes. The character was understood literally. |
| 2452 | .ie n .IP "/%s/ should probably be written as ""%s""" 4 |
| 2453 | .el .IP "/%s/ should probably be written as ``%s''" 4 |
| 2454 | .IX Item "/%s/ should probably be written as %s" |
| 2455 | (W syntax) You have used a pattern where Perl expected to find a string, |
| 2456 | as in the first argument to \f(CW\*(C`join\*(C'\fR. Perl will treat the true |
| 2457 | or false result of matching the pattern against \f(CW$_\fR as the string, |
| 2458 | which is probably not what you had in mind. |
| 2459 | .IP "%s() called too early to check prototype" 4 |
| 2460 | .IX Item "%s() called too early to check prototype" |
| 2461 | (W prototype) You've called a function that has a prototype before the parser saw a |
| 2462 | definition or declaration for it, and Perl could not check that the call |
| 2463 | conforms to the prototype. You need to either add an early prototype |
| 2464 | declaration for the subroutine in question, or move the subroutine |
| 2465 | definition ahead of the call to get proper prototype checking. Alternatively, |
| 2466 | if you are certain that you're calling the function correctly, you may put |
| 2467 | an ampersand before the name to avoid the warning. See perlsub. |
| 2468 | .IP "%s argument is not a \s-1HASH\s0 or \s-1ARRAY\s0 element" 4 |
| 2469 | .IX Item "%s argument is not a HASH or ARRAY element" |
| 2470 | (F) The argument to \fIexists()\fR must be a hash or array element, such as: |
| 2471 | .Sp |
| 2472 | .Vb 2 |
| 2473 | \& $foo{$bar} |
| 2474 | \& $ref->{"susie"}[12] |
| 2475 | .Ve |
| 2476 | .IP "%s argument is not a \s-1HASH\s0 or \s-1ARRAY\s0 element or slice" 4 |
| 2477 | .IX Item "%s argument is not a HASH or ARRAY element or slice" |
| 2478 | (F) The argument to \fIdelete()\fR must be either a hash or array element, such as: |
| 2479 | .Sp |
| 2480 | .Vb 2 |
| 2481 | \& $foo{$bar} |
| 2482 | \& $ref->{"susie"}[12] |
| 2483 | .Ve |
| 2484 | .Sp |
| 2485 | or a hash or array slice, such as: |
| 2486 | .Sp |
| 2487 | .Vb 2 |
| 2488 | \& @foo[$bar, $baz, $xyzzy] |
| 2489 | \& @{$ref->[12]}{"susie", "queue"} |
| 2490 | .Ve |
| 2491 | .IP "%s argument is not a subroutine name" 4 |
| 2492 | .IX Item "%s argument is not a subroutine name" |
| 2493 | (F) The argument to \fIexists()\fR for \f(CW\*(C`exists &sub\*(C'\fR must be a subroutine |
| 2494 | name, and not a subroutine call. \f(CW\*(C`exists &sub()\*(C'\fR will generate this error. |
| 2495 | .ie n .IP "%s package attribute may clash with future reserved word: %s" 4 |
| 2496 | .el .IP "%s package attribute may clash with future reserved word: \f(CW%s\fR" 4 |
| 2497 | .IX Item "%s package attribute may clash with future reserved word: %s" |
| 2498 | (W reserved) A lowercase attribute name was used that had a package-specific handler. |
| 2499 | That name might have a meaning to Perl itself some day, even though it |
| 2500 | doesn't yet. Perhaps you should use a mixed-case attribute name, instead. |
| 2501 | See attributes. |
| 2502 | .ie n .IP "(in cleanup) %s" 4 |
| 2503 | .el .IP "(in cleanup) \f(CW%s\fR" 4 |
| 2504 | .IX Item "(in cleanup) %s" |
| 2505 | (W misc) This prefix usually indicates that a \s-1\fIDESTROY\s0()\fR method raised |
| 2506 | the indicated exception. Since destructors are usually called by |
| 2507 | the system at arbitrary points during execution, and often a vast |
| 2508 | number of times, the warning is issued only once for any number |
| 2509 | of failures that would otherwise result in the same message being |
| 2510 | repeated. |
| 2511 | .Sp |
| 2512 | Failure of user callbacks dispatched using the \f(CW\*(C`G_KEEPERR\*(C'\fR flag |
| 2513 | could also result in this warning. See \*(L"G_KEEPERR\*(R" in perlcall. |
| 2514 | .IP "<> should be quotes" 4 |
| 2515 | .IX Item "<> should be quotes" |
| 2516 | (F) You wrote \f(CW\*(C`require <file>\*(C'\fR when you should have written |
| 2517 | \&\f(CW\*(C`require 'file'\*(C'\fR. |
| 2518 | .IP "Attempt to join self" 4 |
| 2519 | .IX Item "Attempt to join self" |
| 2520 | (F) You tried to join a thread from within itself, which is an |
| 2521 | impossible task. You may be joining the wrong thread, or you may |
| 2522 | need to move the \fIjoin()\fR to some other thread. |
| 2523 | .IP "Bad evalled substitution pattern" 4 |
| 2524 | .IX Item "Bad evalled substitution pattern" |
| 2525 | (F) You've used the /e switch to evaluate the replacement for a |
| 2526 | substitution, but perl found a syntax error in the code to evaluate, |
| 2527 | most likely an unexpected right brace '}'. |
| 2528 | .IP "Bad \fIrealloc()\fR ignored" 4 |
| 2529 | .IX Item "Bad realloc() ignored" |
| 2530 | (S) An internal routine called \fIrealloc()\fR on something that had never been |
| 2531 | \&\fImalloc()\fRed in the first place. Mandatory, but can be disabled by |
| 2532 | setting environment variable \f(CW\*(C`PERL_BADFREE\*(C'\fR to 1. |
| 2533 | .IP "Bareword found in conditional" 4 |
| 2534 | .IX Item "Bareword found in conditional" |
| 2535 | (W bareword) The compiler found a bareword where it expected a conditional, |
| 2536 | which often indicates that an || or && was parsed as part of the |
| 2537 | last argument of the previous construct, for example: |
| 2538 | .Sp |
| 2539 | .Vb 1 |
| 2540 | \& open FOO || die; |
| 2541 | .Ve |
| 2542 | .Sp |
| 2543 | It may also indicate a misspelled constant that has been interpreted |
| 2544 | as a bareword: |
| 2545 | .Sp |
| 2546 | .Vb 2 |
| 2547 | \& use constant TYPO => 1; |
| 2548 | \& if (TYOP) { print "foo" } |
| 2549 | .Ve |
| 2550 | .Sp |
| 2551 | The \f(CW\*(C`strict\*(C'\fR pragma is useful in avoiding such errors. |
| 2552 | .IP "Binary number > 0b11111111111111111111111111111111 non-portable" 4 |
| 2553 | .IX Item "Binary number > 0b11111111111111111111111111111111 non-portable" |
| 2554 | (W portable) The binary number you specified is larger than 2**32\-1 |
| 2555 | (4294967295) and therefore non-portable between systems. See |
| 2556 | perlport for more on portability concerns. |
| 2557 | .IP "Bit vector size > 32 non-portable" 4 |
| 2558 | .IX Item "Bit vector size > 32 non-portable" |
| 2559 | (W portable) Using bit vector sizes larger than 32 is non\-portable. |
| 2560 | .ie n .IP "Buffer overflow in prime_env_iter: %s" 4 |
| 2561 | .el .IP "Buffer overflow in prime_env_iter: \f(CW%s\fR" 4 |
| 2562 | .IX Item "Buffer overflow in prime_env_iter: %s" |
| 2563 | (W internal) A warning peculiar to \s-1VMS\s0. While Perl was preparing to iterate over |
| 2564 | \&\f(CW%ENV\fR, it encountered a logical name or symbol definition which was too long, |
| 2565 | so it was truncated to the string shown. |
| 2566 | .ie n .IP "Can't check filesystem of script ""%s""" 4 |
| 2567 | .el .IP "Can't check filesystem of script ``%s''" 4 |
| 2568 | .IX Item "Can't check filesystem of script %s" |
| 2569 | (P) For some reason you can't check the filesystem of the script for nosuid. |
| 2570 | .ie n .IP "Can't declare class for non-scalar %s in ""%s""" 4 |
| 2571 | .el .IP "Can't declare class for non-scalar \f(CW%s\fR in ``%s''" 4 |
| 2572 | .IX Item "Can't declare class for non-scalar %s in %s" |
| 2573 | (S) Currently, only scalar variables can declared with a specific class |
| 2574 | qualifier in a \*(L"my\*(R" or \*(L"our\*(R" declaration. The semantics may be extended |
| 2575 | for other types of variables in future. |
| 2576 | .ie n .IP "Can't declare %s in ""%s""" 4 |
| 2577 | .el .IP "Can't declare \f(CW%s\fR in ``%s''" 4 |
| 2578 | .IX Item "Can't declare %s in %s" |
| 2579 | (F) Only scalar, array, and hash variables may be declared as \*(L"my\*(R" or |
| 2580 | \&\*(L"our\*(R" variables. They must have ordinary identifiers as names. |
| 2581 | .IP "Can't ignore signal \s-1CHLD\s0, forcing to default" 4 |
| 2582 | .IX Item "Can't ignore signal CHLD, forcing to default" |
| 2583 | (W signal) Perl has detected that it is being run with the \s-1SIGCHLD\s0 signal |
| 2584 | (sometimes known as \s-1SIGCLD\s0) disabled. Since disabling this signal |
| 2585 | will interfere with proper determination of exit status of child |
| 2586 | processes, Perl has reset the signal to its default value. |
| 2587 | This situation typically indicates that the parent program under |
| 2588 | which Perl may be running (e.g., cron) is being very careless. |
| 2589 | .IP "Can't modify non-lvalue subroutine call" 4 |
| 2590 | .IX Item "Can't modify non-lvalue subroutine call" |
| 2591 | (F) Subroutines meant to be used in lvalue context should be declared as |
| 2592 | such, see \*(L"Lvalue subroutines\*(R" in perlsub. |
| 2593 | .IP "Can't read \s-1CRTL\s0 environ" 4 |
| 2594 | .IX Item "Can't read CRTL environ" |
| 2595 | (S) A warning peculiar to \s-1VMS\s0. Perl tried to read an element of \f(CW%ENV\fR |
| 2596 | from the \s-1CRTL\s0's internal environment array and discovered the array was |
| 2597 | missing. You need to figure out where your \s-1CRTL\s0 misplaced its environ |
| 2598 | or define \fI\s-1PERL_ENV_TABLES\s0\fR (see perlvms) so that environ is not searched. |
| 2599 | .ie n .IP "Can't remove %s:\fR \f(CW%s, skipping file" 4 |
| 2600 | .el .IP "Can't remove \f(CW%s:\fR \f(CW%s\fR, skipping file" 4 |
| 2601 | .IX Item "Can't remove %s: %s, skipping file" |
| 2602 | (S) You requested an inplace edit without creating a backup file. Perl |
| 2603 | was unable to remove the original file to replace it with the modified |
| 2604 | file. The file was left unmodified. |
| 2605 | .ie n .IP "Can't return %s from lvalue subroutine" 4 |
| 2606 | .el .IP "Can't return \f(CW%s\fR from lvalue subroutine" 4 |
| 2607 | .IX Item "Can't return %s from lvalue subroutine" |
| 2608 | (F) Perl detected an attempt to return illegal lvalues (such |
| 2609 | as temporary or readonly values) from a subroutine used as an lvalue. |
| 2610 | This is not allowed. |
| 2611 | .IP "Can't weaken a nonreference" 4 |
| 2612 | .IX Item "Can't weaken a nonreference" |
| 2613 | (F) You attempted to weaken something that was not a reference. Only |
| 2614 | references can be weakened. |
| 2615 | .IP "Character class [:%s:] unknown" 4 |
| 2616 | .IX Item "Character class [:%s:] unknown" |
| 2617 | (F) The class in the character class [: :] syntax is unknown. |
| 2618 | See perlre. |
| 2619 | .IP "Character class syntax [%s] belongs inside character classes" 4 |
| 2620 | .IX Item "Character class syntax [%s] belongs inside character classes" |
| 2621 | (W unsafe) The character class constructs [: :], [= =], and [. .] go |
| 2622 | \&\fIinside\fR character classes, the [] are part of the construct, |
| 2623 | for example: /[012[:alpha:]345]/. Note that [= =] and [. .] |
| 2624 | are not currently implemented; they are simply placeholders for |
| 2625 | future extensions. |
| 2626 | .ie n .IP "Constant is not %s reference" 4 |
| 2627 | .el .IP "Constant is not \f(CW%s\fR reference" 4 |
| 2628 | .IX Item "Constant is not %s reference" |
| 2629 | (F) A constant value (perhaps declared using the \f(CW\*(C`use constant\*(C'\fR pragma) |
| 2630 | is being dereferenced, but it amounts to the wrong type of reference. The |
| 2631 | message indicates the type of reference that was expected. This usually |
| 2632 | indicates a syntax error in dereferencing the constant value. |
| 2633 | See \*(L"Constant Functions\*(R" in perlsub and constant. |
| 2634 | .ie n .IP "constant(%s): %s" 4 |
| 2635 | .el .IP "constant(%s): \f(CW%s\fR" 4 |
| 2636 | .IX Item "constant(%s): %s" |
| 2637 | (F) The parser found inconsistencies either while attempting to define an |
| 2638 | overloaded constant, or when trying to find the character name specified |
| 2639 | in the \f(CW\*(C`\eN{...}\*(C'\fR escape. Perhaps you forgot to load the corresponding |
| 2640 | \&\f(CW\*(C`overload\*(C'\fR or \f(CW\*(C`charnames\*(C'\fR pragma? See charnames and overload. |
| 2641 | .IP "CORE::%s is not a keyword" 4 |
| 2642 | .IX Item "CORE::%s is not a keyword" |
| 2643 | (F) The \s-1CORE::\s0 namespace is reserved for Perl keywords. |
| 2644 | .IP "defined(@array) is deprecated" 4 |
| 2645 | .IX Item "defined(@array) is deprecated" |
| 2646 | (D) \fIdefined()\fR is not usually useful on arrays because it checks for an |
| 2647 | undefined \fIscalar\fR value. If you want to see if the array is empty, |
| 2648 | just use \f(CW\*(C`if (@array) { # not empty }\*(C'\fR for example. |
| 2649 | .IP "defined(%hash) is deprecated" 4 |
| 2650 | .IX Item "defined(%hash) is deprecated" |
| 2651 | (D) \fIdefined()\fR is not usually useful on hashes because it checks for an |
| 2652 | undefined \fIscalar\fR value. If you want to see if the hash is empty, |
| 2653 | just use \f(CW\*(C`if (%hash) { # not empty }\*(C'\fR for example. |
| 2654 | .IP "Did not produce a valid header" 4 |
| 2655 | .IX Item "Did not produce a valid header" |
| 2656 | See Server error. |
| 2657 | .ie n .IP "(Did you mean ""local"" instead of ""our""?)" 4 |
| 2658 | .el .IP "(Did you mean ``local'' instead of ``our''?)" 4 |
| 2659 | .IX Item "(Did you mean local instead of our?)" |
| 2660 | (W misc) Remember that \*(L"our\*(R" does not localize the declared global variable. |
| 2661 | You have declared it again in the same lexical scope, which seems superfluous. |
| 2662 | .IP "Document contains no data" 4 |
| 2663 | .IX Item "Document contains no data" |
| 2664 | See Server error. |
| 2665 | .ie n .IP "entering effective %s failed" 4 |
| 2666 | .el .IP "entering effective \f(CW%s\fR failed" 4 |
| 2667 | .IX Item "entering effective %s failed" |
| 2668 | (F) While under the \f(CW\*(C`use filetest\*(C'\fR pragma, switching the real and |
| 2669 | effective uids or gids failed. |
| 2670 | .ie n .IP "false [] range ""%s"" in regexp" 4 |
| 2671 | .el .IP "false [] range ``%s'' in regexp" 4 |
| 2672 | .IX Item "false [] range %s in regexp" |
| 2673 | (W regexp) A character class range must start and end at a literal character, not |
| 2674 | another character class like \f(CW\*(C`\ed\*(C'\fR or \f(CW\*(C`[:alpha:]\*(C'\fR. The \*(L"\-\*(R" in your false |
| 2675 | range is interpreted as a literal \*(L"\-\*(R". Consider quoting the \*(L"\-\*(R", \*(L"\e\-\*(R". |
| 2676 | See perlre. |
| 2677 | .ie n .IP "Filehandle %s opened only for output" 4 |
| 2678 | .el .IP "Filehandle \f(CW%s\fR opened only for output" 4 |
| 2679 | .IX Item "Filehandle %s opened only for output" |
| 2680 | (W io) You tried to read from a filehandle opened only for writing. If you |
| 2681 | intended it to be a read/write filehandle, you needed to open it with |
| 2682 | \&\*(L"+<\*(R" or \*(L"+>\*(R" or \*(L"+>>\*(R" instead of with \*(L"<\*(R" or nothing. If |
| 2683 | you intended only to read from the file, use \*(L"<\*(R". See |
| 2684 | \&\*(L"open\*(R" in perlfunc. |
| 2685 | .ie n .IP "\fIflock()\fR on closed filehandle %s" 4 |
| 2686 | .el .IP "\fIflock()\fR on closed filehandle \f(CW%s\fR" 4 |
| 2687 | .IX Item "flock() on closed filehandle %s" |
| 2688 | (W closed) The filehandle you're attempting to \fIflock()\fR got itself closed some |
| 2689 | time before now. Check your logic flow. \fIflock()\fR operates on filehandles. |
| 2690 | Are you attempting to call \fIflock()\fR on a dirhandle by the same name? |
| 2691 | .ie n .IP "Global symbol ""%s"" requires explicit package name" 4 |
| 2692 | .el .IP "Global symbol ``%s'' requires explicit package name" 4 |
| 2693 | .IX Item "Global symbol %s requires explicit package name" |
| 2694 | (F) You've said \*(L"use strict vars\*(R", which indicates that all variables |
| 2695 | must either be lexically scoped (using \*(L"my\*(R"), declared beforehand using |
| 2696 | \&\*(L"our\*(R", or explicitly qualified to say which package the global variable |
| 2697 | is in (using \*(L"::\*(R"). |
| 2698 | .IP "Hexadecimal number > 0xffffffff non-portable" 4 |
| 2699 | .IX Item "Hexadecimal number > 0xffffffff non-portable" |
| 2700 | (W portable) The hexadecimal number you specified is larger than 2**32\-1 |
| 2701 | (4294967295) and therefore non-portable between systems. See |
| 2702 | perlport for more on portability concerns. |
| 2703 | .ie n .IP "Ill-formed \s-1CRTL\s0 environ value ""%s""" 4 |
| 2704 | .el .IP "Ill-formed \s-1CRTL\s0 environ value ``%s''" 4 |
| 2705 | .IX Item "Ill-formed CRTL environ value %s" |
| 2706 | (W internal) A warning peculiar to \s-1VMS\s0. Perl tried to read the \s-1CRTL\s0's internal |
| 2707 | environ array, and encountered an element without the \f(CW\*(C`=\*(C'\fR delimiter |
| 2708 | used to separate keys from values. The element is ignored. |
| 2709 | .IP "Ill-formed message in prime_env_iter: |%s|" 4 |
| 2710 | .IX Item "Ill-formed message in prime_env_iter: |%s|" |
| 2711 | (W internal) A warning peculiar to \s-1VMS\s0. Perl tried to read a logical name |
| 2712 | or \s-1CLI\s0 symbol definition when preparing to iterate over \f(CW%ENV\fR, and |
| 2713 | didn't see the expected delimiter between key and value, so the |
| 2714 | line was ignored. |
| 2715 | .ie n .IP "Illegal binary digit %s" 4 |
| 2716 | .el .IP "Illegal binary digit \f(CW%s\fR" 4 |
| 2717 | .IX Item "Illegal binary digit %s" |
| 2718 | (F) You used a digit other than 0 or 1 in a binary number. |
| 2719 | .ie n .IP "Illegal binary digit %s ignored" 4 |
| 2720 | .el .IP "Illegal binary digit \f(CW%s\fR ignored" 4 |
| 2721 | .IX Item "Illegal binary digit %s ignored" |
| 2722 | (W digit) You may have tried to use a digit other than 0 or 1 in a binary number. |
| 2723 | Interpretation of the binary number stopped before the offending digit. |
| 2724 | .IP "Illegal number of bits in vec" 4 |
| 2725 | .IX Item "Illegal number of bits in vec" |
| 2726 | (F) The number of bits in \fIvec()\fR (the third argument) must be a power of |
| 2727 | two from 1 to 32 (or 64, if your platform supports that). |
| 2728 | .ie n .IP "Integer overflow in %s number" 4 |
| 2729 | .el .IP "Integer overflow in \f(CW%s\fR number" 4 |
| 2730 | .IX Item "Integer overflow in %s number" |
| 2731 | (W overflow) The hexadecimal, octal or binary number you have specified either |
| 2732 | as a literal or as an argument to \fIhex()\fR or \fIoct()\fR is too big for your |
| 2733 | architecture, and has been converted to a floating point number. On a |
| 2734 | 32\-bit architecture the largest hexadecimal, octal or binary number |
| 2735 | representable without overflow is 0xFFFFFFFF, 037777777777, or |
| 2736 | 0b11111111111111111111111111111111 respectively. Note that Perl |
| 2737 | transparently promotes all numbers to a floating point representation |
| 2738 | internally\*(--subject to loss of precision errors in subsequent |
| 2739 | operations. |
| 2740 | .ie n .IP "Invalid %s\fR attribute: \f(CW%s" 4 |
| 2741 | .el .IP "Invalid \f(CW%s\fR attribute: \f(CW%s\fR" 4 |
| 2742 | .IX Item "Invalid %s attribute: %s" |
| 2743 | The indicated attribute for a subroutine or variable was not recognized |
| 2744 | by Perl or by a user-supplied handler. See attributes. |
| 2745 | .ie n .IP "Invalid %s\fR attributes: \f(CW%s" 4 |
| 2746 | .el .IP "Invalid \f(CW%s\fR attributes: \f(CW%s\fR" 4 |
| 2747 | .IX Item "Invalid %s attributes: %s" |
| 2748 | The indicated attributes for a subroutine or variable were not recognized |
| 2749 | by Perl or by a user-supplied handler. See attributes. |
| 2750 | .ie n .IP "invalid [] range ""%s"" in regexp" 4 |
| 2751 | .el .IP "invalid [] range ``%s'' in regexp" 4 |
| 2752 | .IX Item "invalid [] range %s in regexp" |
| 2753 | The offending range is now explicitly displayed. |
| 2754 | .ie n .IP "Invalid separator character %s in attribute list" 4 |
| 2755 | .el .IP "Invalid separator character \f(CW%s\fR in attribute list" 4 |
| 2756 | .IX Item "Invalid separator character %s in attribute list" |
| 2757 | (F) Something other than a colon or whitespace was seen between the |
| 2758 | elements of an attribute list. If the previous attribute |
| 2759 | had a parenthesised parameter list, perhaps that list was terminated |
| 2760 | too soon. See attributes. |
| 2761 | .ie n .IP "Invalid separator character %s in subroutine attribute list" 4 |
| 2762 | .el .IP "Invalid separator character \f(CW%s\fR in subroutine attribute list" 4 |
| 2763 | .IX Item "Invalid separator character %s in subroutine attribute list" |
| 2764 | (F) Something other than a colon or whitespace was seen between the |
| 2765 | elements of a subroutine attribute list. If the previous attribute |
| 2766 | had a parenthesised parameter list, perhaps that list was terminated |
| 2767 | too soon. |
| 2768 | .ie n .IP "leaving effective %s failed" 4 |
| 2769 | .el .IP "leaving effective \f(CW%s\fR failed" 4 |
| 2770 | .IX Item "leaving effective %s failed" |
| 2771 | (F) While under the \f(CW\*(C`use filetest\*(C'\fR pragma, switching the real and |
| 2772 | effective uids or gids failed. |
| 2773 | .ie n .IP "Lvalue subs returning %s not implemented yet" 4 |
| 2774 | .el .IP "Lvalue subs returning \f(CW%s\fR not implemented yet" 4 |
| 2775 | .IX Item "Lvalue subs returning %s not implemented yet" |
| 2776 | (F) Due to limitations in the current implementation, array and hash |
| 2777 | values cannot be returned in subroutines used in lvalue context. |
| 2778 | See \*(L"Lvalue subroutines\*(R" in perlsub. |
| 2779 | .ie n .IP "Method %s not permitted" 4 |
| 2780 | .el .IP "Method \f(CW%s\fR not permitted" 4 |
| 2781 | .IX Item "Method %s not permitted" |
| 2782 | See Server error. |
| 2783 | .ie n .IP "Missing %sbrace%s on \eN{}" 4 |
| 2784 | .el .IP "Missing \f(CW%sbrace\fR%s on \eN{}" 4 |
| 2785 | .IX Item "Missing %sbrace%s on N{}" |
| 2786 | (F) Wrong syntax of character name literal \f(CW\*(C`\eN{charname}\*(C'\fR within |
| 2787 | double-quotish context. |
| 2788 | .IP "Missing command in piped open" 4 |
| 2789 | .IX Item "Missing command in piped open" |
| 2790 | (W pipe) You used the \f(CW\*(C`open(FH, "| command")\*(C'\fR or \f(CW\*(C`open(FH, "command |")\*(C'\fR |
| 2791 | construction, but the command was missing or blank. |
| 2792 | .ie n .IP "Missing name in ""my sub""" 4 |
| 2793 | .el .IP "Missing name in ``my sub''" 4 |
| 2794 | .IX Item "Missing name in my sub" |
| 2795 | (F) The reserved syntax for lexically scoped subroutines requires that they |
| 2796 | have a name with which they can be found. |
| 2797 | .ie n .IP "No %s specified for \-%c" 4 |
| 2798 | .el .IP "No \f(CW%s\fR specified for \-%c" 4 |
| 2799 | .IX Item "No %s specified for -%c" |
| 2800 | (F) The indicated command line switch needs a mandatory argument, but |
| 2801 | you haven't specified one. |
| 2802 | .ie n .IP "No package name allowed for variable %s in ""our""" 4 |
| 2803 | .el .IP "No package name allowed for variable \f(CW%s\fR in ``our''" 4 |
| 2804 | .IX Item "No package name allowed for variable %s in our" |
| 2805 | (F) Fully qualified variable names are not allowed in \*(L"our\*(R" declarations, |
| 2806 | because that doesn't make much sense under existing semantics. Such |
| 2807 | syntax is reserved for future extensions. |
| 2808 | .IP "No space allowed after \-%c" 4 |
| 2809 | .IX Item "No space allowed after -%c" |
| 2810 | (F) The argument to the indicated command line switch must follow immediately |
| 2811 | after the switch, without intervening spaces. |
| 2812 | .IP "no \s-1UTC\s0 offset information; assuming local time is \s-1UTC\s0" 4 |
| 2813 | .IX Item "no UTC offset information; assuming local time is UTC" |
| 2814 | (S) A warning peculiar to \s-1VMS\s0. Perl was unable to find the local |
| 2815 | timezone offset, so it's assuming that local system time is equivalent |
| 2816 | to \s-1UTC\s0. If it's not, define the logical name \fI\s-1SYS$TIMEZONE_DIFFERENTIAL\s0\fR |
| 2817 | to translate to the number of seconds which need to be added to \s-1UTC\s0 to |
| 2818 | get local time. |
| 2819 | .IP "Octal number > 037777777777 non-portable" 4 |
| 2820 | .IX Item "Octal number > 037777777777 non-portable" |
| 2821 | (W portable) The octal number you specified is larger than 2**32\-1 (4294967295) |
| 2822 | and therefore non-portable between systems. See perlport for more |
| 2823 | on portability concerns. |
| 2824 | .Sp |
| 2825 | See also perlport for writing portable code. |
| 2826 | .IP "panic: del_backref" 4 |
| 2827 | .IX Item "panic: del_backref" |
| 2828 | (P) Failed an internal consistency check while trying to reset a weak |
| 2829 | reference. |
| 2830 | .IP "panic: kid popen errno read" 4 |
| 2831 | .IX Item "panic: kid popen errno read" |
| 2832 | (F) forked child returned an incomprehensible message about its errno. |
| 2833 | .IP "panic: magic_killbackrefs" 4 |
| 2834 | .IX Item "panic: magic_killbackrefs" |
| 2835 | (P) Failed an internal consistency check while trying to reset all weak |
| 2836 | references to an object. |
| 2837 | .ie n .IP "Parentheses missing around ""%s"" list" 4 |
| 2838 | .el .IP "Parentheses missing around ``%s'' list" 4 |
| 2839 | .IX Item "Parentheses missing around %s list" |
| 2840 | (W parenthesis) You said something like |
| 2841 | .Sp |
| 2842 | .Vb 1 |
| 2843 | \& my $foo, $bar = @_; |
| 2844 | .Ve |
| 2845 | .Sp |
| 2846 | when you meant |
| 2847 | .Sp |
| 2848 | .Vb 1 |
| 2849 | \& my ($foo, $bar) = @_; |
| 2850 | .Ve |
| 2851 | .Sp |
| 2852 | Remember that \*(L"my\*(R", \*(L"our\*(R", and \*(L"local\*(R" bind tighter than comma. |
| 2853 | .ie n .IP "Possible unintended interpolation of %s in string" 4 |
| 2854 | .el .IP "Possible unintended interpolation of \f(CW%s\fR in string" 4 |
| 2855 | .IX Item "Possible unintended interpolation of %s in string" |
| 2856 | (W ambiguous) It used to be that Perl would try to guess whether you |
| 2857 | wanted an array interpolated or a literal @. It no longer does this; |
| 2858 | arrays are now \fIalways\fR interpolated into strings. This means that |
| 2859 | if you try something like: |
| 2860 | .Sp |
| 2861 | .Vb 1 |
| 2862 | \& print "fred@example.com"; |
| 2863 | .Ve |
| 2864 | .Sp |
| 2865 | and the array \f(CW@example\fR doesn't exist, Perl is going to print |
| 2866 | \&\f(CW\*(C`fred.com\*(C'\fR, which is probably not what you wanted. To get a literal |
| 2867 | \&\f(CW\*(C`@\*(C'\fR sign in a string, put a backslash before it, just as you would |
| 2868 | to get a literal \f(CW\*(C`$\*(C'\fR sign. |
| 2869 | .ie n .IP "Possible Y2K bug: %s" 4 |
| 2870 | .el .IP "Possible Y2K bug: \f(CW%s\fR" 4 |
| 2871 | .IX Item "Possible Y2K bug: %s" |
| 2872 | (W y2k) You are concatenating the number 19 with another number, which |
| 2873 | could be a potential Year 2000 problem. |
| 2874 | .ie n .IP "pragma ""attrs"" is deprecated, use ""sub \s-1NAME\s0 : \s-1ATTRS\s0"" instead" 4 |
| 2875 | .el .IP "pragma ``attrs'' is deprecated, use ``sub \s-1NAME\s0 : \s-1ATTRS\s0'' instead" 4 |
| 2876 | .IX Item "pragma attrs is deprecated, use sub NAME : ATTRS instead" |
| 2877 | (W deprecated) You have written something like this: |
| 2878 | .Sp |
| 2879 | .Vb 4 |
| 2880 | \& sub doit |
| 2881 | \& { |
| 2882 | \& use attrs qw(locked); |
| 2883 | \& } |
| 2884 | .Ve |
| 2885 | .Sp |
| 2886 | You should use the new declaration syntax instead. |
| 2887 | .Sp |
| 2888 | .Vb 3 |
| 2889 | \& sub doit : locked |
| 2890 | \& { |
| 2891 | \& ... |
| 2892 | .Ve |
| 2893 | .Sp |
| 2894 | The \f(CW\*(C`use attrs\*(C'\fR pragma is now obsolete, and is only provided for |
| 2895 | backward\-compatibility. See \*(L"Subroutine Attributes\*(R" in perlsub. |
| 2896 | .IP "Premature end of script headers" 4 |
| 2897 | .IX Item "Premature end of script headers" |
| 2898 | See Server error. |
| 2899 | .IP "Repeat count in pack overflows" 4 |
| 2900 | .IX Item "Repeat count in pack overflows" |
| 2901 | (F) You can't specify a repeat count so large that it overflows |
| 2902 | your signed integers. See \*(L"pack\*(R" in perlfunc. |
| 2903 | .IP "Repeat count in unpack overflows" 4 |
| 2904 | .IX Item "Repeat count in unpack overflows" |
| 2905 | (F) You can't specify a repeat count so large that it overflows |
| 2906 | your signed integers. See \*(L"unpack\*(R" in perlfunc. |
| 2907 | .IP "\fIrealloc()\fR of freed memory ignored" 4 |
| 2908 | .IX Item "realloc() of freed memory ignored" |
| 2909 | (S) An internal routine called \fIrealloc()\fR on something that had already |
| 2910 | been freed. |
| 2911 | .IP "Reference is already weak" 4 |
| 2912 | .IX Item "Reference is already weak" |
| 2913 | (W misc) You have attempted to weaken a reference that is already weak. |
| 2914 | Doing so has no effect. |
| 2915 | .IP "setpgrp can't take arguments" 4 |
| 2916 | .IX Item "setpgrp can't take arguments" |
| 2917 | (F) Your system has the \fIsetpgrp()\fR from \s-1BSD\s0 4.2, which takes no arguments, |
| 2918 | unlike \s-1POSIX\s0 \fIsetpgid()\fR, which takes a process \s-1ID\s0 and process group \s-1ID\s0. |
| 2919 | .IP "Strange *+?{} on zero-length expression" 4 |
| 2920 | .IX Item "Strange *+?{} on zero-length expression" |
| 2921 | (W regexp) You applied a regular expression quantifier in a place where it |
| 2922 | makes no sense, such as on a zero-width assertion. |
| 2923 | Try putting the quantifier inside the assertion instead. For example, |
| 2924 | the way to match \*(L"abc\*(R" provided that it is followed by three |
| 2925 | repetitions of \*(L"xyz\*(R" is \f(CW\*(C`/abc(?=(?:xyz){3})/\*(C'\fR, not \f(CW\*(C`/abc(?=xyz){3}/\*(C'\fR. |
| 2926 | .ie n .IP "switching effective %s is not implemented" 4 |
| 2927 | .el .IP "switching effective \f(CW%s\fR is not implemented" 4 |
| 2928 | .IX Item "switching effective %s is not implemented" |
| 2929 | (F) While under the \f(CW\*(C`use filetest\*(C'\fR pragma, we cannot switch the |
| 2930 | real and effective uids or gids. |
| 2931 | .IP "This Perl can't reset \s-1CRTL\s0 environ elements (%s)" 4 |
| 2932 | .IX Item "This Perl can't reset CRTL environ elements (%s)" |
| 2933 | .PD 0 |
| 2934 | .IP "This Perl can't set \s-1CRTL\s0 environ elements (%s=%s)" 4 |
| 2935 | .IX Item "This Perl can't set CRTL environ elements (%s=%s)" |
| 2936 | .PD |
| 2937 | (W internal) Warnings peculiar to \s-1VMS\s0. You tried to change or delete an element |
| 2938 | of the \s-1CRTL\s0's internal environ array, but your copy of Perl wasn't |
| 2939 | built with a \s-1CRTL\s0 that contained the \fIsetenv()\fR function. You'll need to |
| 2940 | rebuild Perl with a \s-1CRTL\s0 that does, or redefine \fI\s-1PERL_ENV_TABLES\s0\fR (see |
| 2941 | perlvms) so that the environ array isn't the target of the change to |
| 2942 | \&\f(CW%ENV\fR which produced the warning. |
| 2943 | .ie n .IP "Too late to run %s block" 4 |
| 2944 | .el .IP "Too late to run \f(CW%s\fR block" 4 |
| 2945 | .IX Item "Too late to run %s block" |
| 2946 | (W void) A \s-1CHECK\s0 or \s-1INIT\s0 block is being defined during run time proper, |
| 2947 | when the opportunity to run them has already passed. Perhaps you are |
| 2948 | loading a file with \f(CW\*(C`require\*(C'\fR or \f(CW\*(C`do\*(C'\fR when you should be using |
| 2949 | \&\f(CW\*(C`use\*(C'\fR instead. Or perhaps you should put the \f(CW\*(C`require\*(C'\fR or \f(CW\*(C`do\*(C'\fR |
| 2950 | inside a \s-1BEGIN\s0 block. |
| 2951 | .IP "Unknown \fIopen()\fR mode '%s'" 4 |
| 2952 | .IX Item "Unknown open() mode '%s'" |
| 2953 | (F) The second argument of 3\-argument \fIopen()\fR is not among the list |
| 2954 | of valid modes: \f(CW\*(C`<\*(C'\fR, \f(CW\*(C`>\*(C'\fR, \f(CW\*(C`>>\*(C'\fR, \f(CW\*(C`+<\*(C'\fR, |
| 2955 | \&\f(CW\*(C`+>\*(C'\fR, \f(CW\*(C`+>>\*(C'\fR, \f(CW\*(C`\-|\*(C'\fR, \f(CW\*(C`|\-\*(C'\fR. |
| 2956 | .ie n .IP "Unknown process %x\fR sent message to prime_env_iter: \f(CW%s" 4 |
| 2957 | .el .IP "Unknown process \f(CW%x\fR sent message to prime_env_iter: \f(CW%s\fR" 4 |
| 2958 | .IX Item "Unknown process %x sent message to prime_env_iter: %s" |
| 2959 | (P) An error peculiar to \s-1VMS\s0. Perl was reading values for \f(CW%ENV\fR before |
| 2960 | iterating over it, and someone else stuck a message in the stream of |
| 2961 | data Perl expected. Someone's very confused, or perhaps trying to |
| 2962 | subvert Perl's population of \f(CW%ENV\fR for nefarious purposes. |
| 2963 | .IP "Unrecognized escape \e\e%c passed through" 4 |
| 2964 | .IX Item "Unrecognized escape %c passed through" |
| 2965 | (W misc) You used a backslash-character combination which is not recognized |
| 2966 | by Perl. The character was understood literally. |
| 2967 | .IP "Unterminated attribute parameter in attribute list" 4 |
| 2968 | .IX Item "Unterminated attribute parameter in attribute list" |
| 2969 | (F) The lexer saw an opening (left) parenthesis character while parsing an |
| 2970 | attribute list, but the matching closing (right) parenthesis |
| 2971 | character was not found. You may need to add (or remove) a backslash |
| 2972 | character to get your parentheses to balance. See attributes. |
| 2973 | .IP "Unterminated attribute list" 4 |
| 2974 | .IX Item "Unterminated attribute list" |
| 2975 | (F) The lexer found something other than a simple identifier at the start |
| 2976 | of an attribute, and it wasn't a semicolon or the start of a |
| 2977 | block. Perhaps you terminated the parameter list of the previous attribute |
| 2978 | too soon. See attributes. |
| 2979 | .IP "Unterminated attribute parameter in subroutine attribute list" 4 |
| 2980 | .IX Item "Unterminated attribute parameter in subroutine attribute list" |
| 2981 | (F) The lexer saw an opening (left) parenthesis character while parsing a |
| 2982 | subroutine attribute list, but the matching closing (right) parenthesis |
| 2983 | character was not found. You may need to add (or remove) a backslash |
| 2984 | character to get your parentheses to balance. |
| 2985 | .IP "Unterminated subroutine attribute list" 4 |
| 2986 | .IX Item "Unterminated subroutine attribute list" |
| 2987 | (F) The lexer found something other than a simple identifier at the start |
| 2988 | of a subroutine attribute, and it wasn't a semicolon or the start of a |
| 2989 | block. Perhaps you terminated the parameter list of the previous attribute |
| 2990 | too soon. |
| 2991 | .ie n .IP "Value of \s-1CLI\s0 symbol ""%s"" too long" 4 |
| 2992 | .el .IP "Value of \s-1CLI\s0 symbol ``%s'' too long" 4 |
| 2993 | .IX Item "Value of CLI symbol %s too long" |
| 2994 | (W misc) A warning peculiar to \s-1VMS\s0. Perl tried to read the value of an \f(CW%ENV\fR |
| 2995 | element from a \s-1CLI\s0 symbol table, and found a resultant string longer |
| 2996 | than 1024 characters. The return value has been truncated to 1024 |
| 2997 | characters. |
| 2998 | .IP "Version number must be a constant number" 4 |
| 2999 | .IX Item "Version number must be a constant number" |
| 3000 | (P) The attempt to translate a \f(CW\*(C`use Module n.n LIST\*(C'\fR statement into |
| 3001 | its equivalent \f(CW\*(C`BEGIN\*(C'\fR block found an internal inconsistency with |
| 3002 | the version number. |
| 3003 | .SH "New tests" |
| 3004 | .IX Header "New tests" |
| 3005 | .IP "lib/attrs" 4 |
| 3006 | .IX Item "lib/attrs" |
| 3007 | Compatibility tests for \f(CW\*(C`sub : attrs\*(C'\fR vs the older \f(CW\*(C`use attrs\*(C'\fR. |
| 3008 | .IP "lib/env" 4 |
| 3009 | .IX Item "lib/env" |
| 3010 | Tests for new environment scalar capability (e.g., \f(CW\*(C`use Env qw($BAR);\*(C'\fR). |
| 3011 | .IP "lib/env\-array" 4 |
| 3012 | .IX Item "lib/env-array" |
| 3013 | Tests for new environment array capability (e.g., \f(CW\*(C`use Env qw(@PATH);\*(C'\fR). |
| 3014 | .IP "lib/io_const" 4 |
| 3015 | .IX Item "lib/io_const" |
| 3016 | \&\s-1IO\s0 constants (SEEK_*, _IO*). |
| 3017 | .IP "lib/io_dir" 4 |
| 3018 | .IX Item "lib/io_dir" |
| 3019 | Directory-related \s-1IO\s0 methods (new, read, close, rewind, tied delete). |
| 3020 | .IP "lib/io_multihomed" 4 |
| 3021 | .IX Item "lib/io_multihomed" |
| 3022 | \&\s-1INET\s0 sockets with multi-homed hosts. |
| 3023 | .IP "lib/io_poll" 4 |
| 3024 | .IX Item "lib/io_poll" |
| 3025 | \&\s-1IO\s0 \fIpoll()\fR. |
| 3026 | .IP "lib/io_unix" 4 |
| 3027 | .IX Item "lib/io_unix" |
| 3028 | \&\s-1UNIX\s0 sockets. |
| 3029 | .IP "op/attrs" 4 |
| 3030 | .IX Item "op/attrs" |
| 3031 | Regression tests for \f(CW\*(C`my ($x,@y,%z) : attrs\*(C'\fR and <sub : attrs>. |
| 3032 | .IP "op/filetest" 4 |
| 3033 | .IX Item "op/filetest" |
| 3034 | File test operators. |
| 3035 | .IP "op/lex_assign" 4 |
| 3036 | .IX Item "op/lex_assign" |
| 3037 | Verify operations that access pad objects (lexicals and temporaries). |
| 3038 | .IP "op/exists_sub" 4 |
| 3039 | .IX Item "op/exists_sub" |
| 3040 | Verify \f(CW\*(C`exists &sub\*(C'\fR operations. |
| 3041 | .SH "Incompatible Changes" |
| 3042 | .IX Header "Incompatible Changes" |
| 3043 | .Sh "Perl Source Incompatibilities" |
| 3044 | .IX Subsection "Perl Source Incompatibilities" |
| 3045 | Beware that any new warnings that have been added or old ones |
| 3046 | that have been enhanced are \fBnot\fR considered incompatible changes. |
| 3047 | .PP |
| 3048 | Since all new warnings must be explicitly requested via the \f(CW\*(C`\-w\*(C'\fR |
| 3049 | switch or the \f(CW\*(C`warnings\*(C'\fR pragma, it is ultimately the programmer's |
| 3050 | responsibility to ensure that warnings are enabled judiciously. |
| 3051 | .IP "\s-1CHECK\s0 is a new keyword" 4 |
| 3052 | .IX Item "CHECK is a new keyword" |
| 3053 | All subroutine definitions named \s-1CHECK\s0 are now special. See |
| 3054 | \&\f(CW\*(C`/"Support for CHECK blocks"\*(C'\fR for more information. |
| 3055 | .IP "Treatment of list slices of undef has changed" 4 |
| 3056 | .IX Item "Treatment of list slices of undef has changed" |
| 3057 | There is a potential incompatibility in the behavior of list slices |
| 3058 | that are comprised entirely of undefined values. |
| 3059 | See \*(L"Behavior of list slices is more consistent\*(R". |
| 3060 | .ie n .IP "Format of $English::PERL_VERSION is different" 4 |
| 3061 | .el .IP "Format of \f(CW$English::PERL_VERSION\fR is different" 4 |
| 3062 | .IX Item "Format of $English::PERL_VERSION is different" |
| 3063 | The English module now sets \f(CW$PERL_VERSION\fR to $^V (a string value) rather |
| 3064 | than \f(CW$]\fR (a numeric value). This is a potential incompatibility. |
| 3065 | Send us a report via perlbug if you are affected by this. |
| 3066 | .Sp |
| 3067 | See \*(L"Improved Perl version numbering system\*(R" for the reasons for |
| 3068 | this change. |
| 3069 | .ie n .IP "Literals of the form 1.2.3 parse differently" 4 |
| 3070 | .el .IP "Literals of the form \f(CW1.2.3\fR parse differently" 4 |
| 3071 | .IX Item "Literals of the form 1.2.3 parse differently" |
| 3072 | Previously, numeric literals with more than one dot in them were |
| 3073 | interpreted as a floating point number concatenated with one or more |
| 3074 | numbers. Such \*(L"numbers\*(R" are now parsed as strings composed of the |
| 3075 | specified ordinals. |
| 3076 | .Sp |
| 3077 | For example, \f(CW\*(C`print 97.98.99\*(C'\fR used to output \f(CW97.9899\fR in earlier |
| 3078 | versions, but now prints \f(CW\*(C`abc\*(C'\fR. |
| 3079 | .Sp |
| 3080 | See \*(L"Support for strings represented as a vector of ordinals\*(R". |
| 3081 | .IP "Possibly changed pseudo-random number generator" 4 |
| 3082 | .IX Item "Possibly changed pseudo-random number generator" |
| 3083 | Perl programs that depend on reproducing a specific set of pseudo-random |
| 3084 | numbers may now produce different output due to improvements made to the |
| 3085 | \&\fIrand()\fR builtin. You can use \f(CW\*(C`sh Configure \-Drandfunc=rand\*(C'\fR to obtain |
| 3086 | the old behavior. |
| 3087 | .Sp |
| 3088 | See \*(L"Better pseudo-random number generator\*(R". |
| 3089 | .IP "Hashing function for hash keys has changed" 4 |
| 3090 | .IX Item "Hashing function for hash keys has changed" |
| 3091 | Even though Perl hashes are not order preserving, the apparently |
| 3092 | random order encountered when iterating on the contents of a hash |
| 3093 | is actually determined by the hashing algorithm used. Improvements |
| 3094 | in the algorithm may yield a random order that is \fBdifferent\fR from |
| 3095 | that of previous versions, especially when iterating on hashes. |
| 3096 | .Sp |
| 3097 | See \*(L"Better worst-case behavior of hashes\*(R" for additional |
| 3098 | information. |
| 3099 | .ie n .IP """undef"" fails on read only values" 4 |
| 3100 | .el .IP "\f(CWundef\fR fails on read only values" 4 |
| 3101 | .IX Item "undef fails on read only values" |
| 3102 | Using the \f(CW\*(C`undef\*(C'\fR operator on a readonly value (such as \f(CW$1\fR) has |
| 3103 | the same effect as assigning \f(CW\*(C`undef\*(C'\fR to the readonly value\*(--it |
| 3104 | throws an exception. |
| 3105 | .IP "Close-on-exec bit may be set on pipe and socket handles" 4 |
| 3106 | .IX Item "Close-on-exec bit may be set on pipe and socket handles" |
| 3107 | Pipe and socket handles are also now subject to the close-on-exec |
| 3108 | behavior determined by the special variable $^F. |
| 3109 | .Sp |
| 3110 | See \*(L"More consistent close-on-exec behavior\*(R". |
| 3111 | .ie n .IP "Writing ""$$1""\fR to mean \f(CW""${$}1"" is unsupported" 4 |
| 3112 | .el .IP "Writing \f(CW``$$1''\fR to mean \f(CW``${$}1''\fR is unsupported" 4 |
| 3113 | .IX Item "Writing ""$$1"" to mean ""${$}1"" is unsupported" |
| 3114 | Perl 5.004 deprecated the interpretation of \f(CW$$1\fR and |
| 3115 | similar within interpolated strings to mean \f(CW\*(C`$$ . "1"\*(C'\fR, |
| 3116 | but still allowed it. |
| 3117 | .Sp |
| 3118 | In Perl 5.6.0 and later, \f(CW"$$1"\fR always means \f(CW"${$1}"\fR. |
| 3119 | .ie n .IP "\fIdelete()\fR, \fIeach()\fR, \fIvalues()\fR and ""\e(%h)""" 4 |
| 3120 | .el .IP "\fIdelete()\fR, \fIeach()\fR, \fIvalues()\fR and \f(CW\e(%h)\fR" 4 |
| 3121 | .IX Item "delete(), each(), values() and )" |
| 3122 | operate on aliases to values, not copies |
| 3123 | .Sp |
| 3124 | \&\fIdelete()\fR, \fIeach()\fR, \fIvalues()\fR and hashes (e.g. \f(CW\*(C`\e(%h)\*(C'\fR) |
| 3125 | in a list context return the actual |
| 3126 | values in the hash, instead of copies (as they used to in earlier |
| 3127 | versions). Typical idioms for using these constructs copy the |
| 3128 | returned values, but this can make a significant difference when |
| 3129 | creating references to the returned values. Keys in the hash are still |
| 3130 | returned as copies when iterating on a hash. |
| 3131 | .Sp |
| 3132 | See also \*(L"\fIdelete()\fR, \fIeach()\fR, \fIvalues()\fR and hash iteration are faster\*(R". |
| 3133 | .IP "vec(\s-1EXPR\s0,OFFSET,BITS) enforces powers-of-two \s-1BITS\s0" 4 |
| 3134 | .IX Item "vec(EXPR,OFFSET,BITS) enforces powers-of-two BITS" |
| 3135 | \&\fIvec()\fR generates a run-time error if the \s-1BITS\s0 argument is not |
| 3136 | a valid power-of-two integer. |
| 3137 | .IP "Text of some diagnostic output has changed" 4 |
| 3138 | .IX Item "Text of some diagnostic output has changed" |
| 3139 | Most references to internal Perl operations in diagnostics |
| 3140 | have been changed to be more descriptive. This may be an |
| 3141 | issue for programs that may incorrectly rely on the exact |
| 3142 | text of diagnostics for proper functioning. |
| 3143 | .ie n .IP """%@"" has been removed" 4 |
| 3144 | .el .IP "\f(CW%@\fR has been removed" 4 |
| 3145 | .IX Item "%@ has been removed" |
| 3146 | The undocumented special variable \f(CW\*(C`%@\*(C'\fR that used to accumulate |
| 3147 | \&\*(L"background\*(R" errors (such as those that happen in \s-1\fIDESTROY\s0()\fR) |
| 3148 | has been removed, because it could potentially result in memory |
| 3149 | leaks. |
| 3150 | .IP "Parenthesized \fInot()\fR behaves like a list operator" 4 |
| 3151 | .IX Item "Parenthesized not() behaves like a list operator" |
| 3152 | The \f(CW\*(C`not\*(C'\fR operator now falls under the \*(L"if it looks like a function, |
| 3153 | it behaves like a function\*(R" rule. |
| 3154 | .Sp |
| 3155 | As a result, the parenthesized form can be used with \f(CW\*(C`grep\*(C'\fR and \f(CW\*(C`map\*(C'\fR. |
| 3156 | The following construct used to be a syntax error before, but it works |
| 3157 | as expected now: |
| 3158 | .Sp |
| 3159 | .Vb 1 |
| 3160 | \& grep not($_), @things; |
| 3161 | .Ve |
| 3162 | .Sp |
| 3163 | On the other hand, using \f(CW\*(C`not\*(C'\fR with a literal list slice may not |
| 3164 | work. The following previously allowed construct: |
| 3165 | .Sp |
| 3166 | .Vb 1 |
| 3167 | \& print not (1,2,3)[0]; |
| 3168 | .Ve |
| 3169 | .Sp |
| 3170 | needs to be written with additional parentheses now: |
| 3171 | .Sp |
| 3172 | .Vb 1 |
| 3173 | \& print not((1,2,3)[0]); |
| 3174 | .Ve |
| 3175 | .Sp |
| 3176 | The behavior remains unaffected when \f(CW\*(C`not\*(C'\fR is not followed by parentheses. |
| 3177 | .ie n .IP "Semantics of bareword prototype ""(*)"" have changed" 4 |
| 3178 | .el .IP "Semantics of bareword prototype \f(CW(*)\fR have changed" 4 |
| 3179 | .IX Item "Semantics of bareword prototype (*) have changed" |
| 3180 | The semantics of the bareword prototype \f(CW\*(C`*\*(C'\fR have changed. Perl 5.005 |
| 3181 | always coerced simple scalar arguments to a typeglob, which wasn't useful |
| 3182 | in situations where the subroutine must distinguish between a simple |
| 3183 | scalar and a typeglob. The new behavior is to not coerce bareword |
| 3184 | arguments to a typeglob. The value will always be visible as either |
| 3185 | a simple scalar or as a reference to a typeglob. |
| 3186 | .Sp |
| 3187 | See \*(L"More functional bareword prototype (*)\*(R". |
| 3188 | .IP "Semantics of bit operators may have changed on 64\-bit platforms" 4 |
| 3189 | .IX Item "Semantics of bit operators may have changed on 64-bit platforms" |
| 3190 | If your platform is either natively 64\-bit or if Perl has been |
| 3191 | configured to used 64\-bit integers, i.e., \f(CW$Config\fR{ivsize} is 8, |
| 3192 | there may be a potential incompatibility in the behavior of bitwise |
| 3193 | numeric operators (& | ^ ~ << >>). These operators used to strictly |
| 3194 | operate on the lower 32 bits of integers in previous versions, but now |
| 3195 | operate over the entire native integral width. In particular, note |
| 3196 | that unary \f(CW\*(C`~\*(C'\fR will produce different results on platforms that have |
| 3197 | different \f(CW$Config\fR{ivsize}. For portability, be sure to mask off |
| 3198 | the excess bits in the result of unary \f(CW\*(C`~\*(C'\fR, e.g., \f(CW\*(C`~$x & 0xffffffff\*(C'\fR. |
| 3199 | .Sp |
| 3200 | See \*(L"Bit operators support full native integer width\*(R". |
| 3201 | .IP "More builtins taint their results" 4 |
| 3202 | .IX Item "More builtins taint their results" |
| 3203 | As described in \*(L"Improved security features\*(R", there may be more |
| 3204 | sources of taint in a Perl program. |
| 3205 | .Sp |
| 3206 | To avoid these new tainting behaviors, you can build Perl with the |
| 3207 | Configure option \f(CW\*(C`\-Accflags=\-DINCOMPLETE_TAINTS\*(C'\fR. Beware that the |
| 3208 | ensuing perl binary may be insecure. |
| 3209 | .Sh "C Source Incompatibilities" |
| 3210 | .IX Subsection "C Source Incompatibilities" |
| 3211 | .ie n .IP """PERL_POLLUTE""" 4 |
| 3212 | .el .IP "\f(CWPERL_POLLUTE\fR" 4 |
| 3213 | .IX Item "PERL_POLLUTE" |
| 3214 | Release 5.005 grandfathered old global symbol names by providing preprocessor |
| 3215 | macros for extension source compatibility. As of release 5.6.0, these |
| 3216 | preprocessor definitions are not available by default. You need to explicitly |
| 3217 | compile perl with \f(CW\*(C`\-DPERL_POLLUTE\*(C'\fR to get these definitions. For |
| 3218 | extensions still using the old symbols, this option can be |
| 3219 | specified via MakeMaker: |
| 3220 | .Sp |
| 3221 | .Vb 1 |
| 3222 | \& perl Makefile.PL POLLUTE=1 |
| 3223 | .Ve |
| 3224 | .ie n .IP """PERL_IMPLICIT_CONTEXT""" 4 |
| 3225 | .el .IP "\f(CWPERL_IMPLICIT_CONTEXT\fR" 4 |
| 3226 | .IX Item "PERL_IMPLICIT_CONTEXT" |
| 3227 | This new build option provides a set of macros for all \s-1API\s0 functions |
| 3228 | such that an implicit interpreter/thread context argument is passed to |
| 3229 | every \s-1API\s0 function. As a result of this, something like \f(CW\*(C`sv_setsv(foo,bar)\*(C'\fR |
| 3230 | amounts to a macro invocation that actually translates to something like |
| 3231 | \&\f(CW\*(C`Perl_sv_setsv(my_perl,foo,bar)\*(C'\fR. While this is generally expected |
| 3232 | to not have any significant source compatibility issues, the difference |
| 3233 | between a macro and a real function call will need to be considered. |
| 3234 | .Sp |
| 3235 | This means that there \fBis\fR a source compatibility issue as a result of |
| 3236 | this if your extensions attempt to use pointers to any of the Perl \s-1API\s0 |
| 3237 | functions. |
| 3238 | .Sp |
| 3239 | Note that the above issue is not relevant to the default build of |
| 3240 | Perl, whose interfaces continue to match those of prior versions |
| 3241 | (but subject to the other options described here). |
| 3242 | .Sp |
| 3243 | See \*(L"The Perl \s-1API\s0\*(R" in perlguts for detailed information on the |
| 3244 | ramifications of building Perl with this option. |
| 3245 | .Sp |
| 3246 | .Vb 3 |
| 3247 | \& NOTE: PERL_IMPLICIT_CONTEXT is automatically enabled whenever Perl is built |
| 3248 | \& with one of -Dusethreads, -Dusemultiplicity, or both. It is not |
| 3249 | \& intended to be enabled by users at this time. |
| 3250 | .Ve |
| 3251 | .ie n .IP """PERL_POLLUTE_MALLOC""" 4 |
| 3252 | .el .IP "\f(CWPERL_POLLUTE_MALLOC\fR" 4 |
| 3253 | .IX Item "PERL_POLLUTE_MALLOC" |
| 3254 | Enabling Perl's malloc in release 5.005 and earlier caused the namespace of |
| 3255 | the system's malloc family of functions to be usurped by the Perl versions, |
| 3256 | since by default they used the same names. Besides causing problems on |
| 3257 | platforms that do not allow these functions to be cleanly replaced, this |
| 3258 | also meant that the system versions could not be called in programs that |
| 3259 | used Perl's malloc. Previous versions of Perl have allowed this behaviour |
| 3260 | to be suppressed with the \s-1HIDEMYMALLOC\s0 and \s-1EMBEDMYMALLOC\s0 preprocessor |
| 3261 | definitions. |
| 3262 | .Sp |
| 3263 | As of release 5.6.0, Perl's malloc family of functions have default names |
| 3264 | distinct from the system versions. You need to explicitly compile perl with |
| 3265 | \&\f(CW\*(C`\-DPERL_POLLUTE_MALLOC\*(C'\fR to get the older behaviour. \s-1HIDEMYMALLOC\s0 |
| 3266 | and \s-1EMBEDMYMALLOC\s0 have no effect, since the behaviour they enabled is now |
| 3267 | the default. |
| 3268 | .Sp |
| 3269 | Note that these functions do \fBnot\fR constitute Perl's memory allocation \s-1API\s0. |
| 3270 | See \*(L"Memory Allocation\*(R" in perlguts for further information about that. |
| 3271 | .Sh "Compatible C Source \s-1API\s0 Changes" |
| 3272 | .IX Subsection "Compatible C Source API Changes" |
| 3273 | .ie n .IP """PATCHLEVEL""\fR is now \f(CW""PERL_VERSION""" 4 |
| 3274 | .el .IP "\f(CWPATCHLEVEL\fR is now \f(CWPERL_VERSION\fR" 4 |
| 3275 | .IX Item "PATCHLEVEL is now PERL_VERSION" |
| 3276 | The cpp macros \f(CW\*(C`PERL_REVISION\*(C'\fR, \f(CW\*(C`PERL_VERSION\*(C'\fR, and \f(CW\*(C`PERL_SUBVERSION\*(C'\fR |
| 3277 | are now available by default from perl.h, and reflect the base revision, |
| 3278 | patchlevel, and subversion respectively. \f(CW\*(C`PERL_REVISION\*(C'\fR had no |
| 3279 | prior equivalent, while \f(CW\*(C`PERL_VERSION\*(C'\fR and \f(CW\*(C`PERL_SUBVERSION\*(C'\fR were |
| 3280 | previously available as \f(CW\*(C`PATCHLEVEL\*(C'\fR and \f(CW\*(C`SUBVERSION\*(C'\fR. |
| 3281 | .Sp |
| 3282 | The new names cause less pollution of the \fBcpp\fR namespace and reflect what |
| 3283 | the numbers have come to stand for in common practice. For compatibility, |
| 3284 | the old names are still supported when \fIpatchlevel.h\fR is explicitly |
| 3285 | included (as required before), so there is no source incompatibility |
| 3286 | from the change. |
| 3287 | .Sh "Binary Incompatibilities" |
| 3288 | .IX Subsection "Binary Incompatibilities" |
| 3289 | In general, the default build of this release is expected to be binary |
| 3290 | compatible for extensions built with the 5.005 release or its maintenance |
| 3291 | versions. However, specific platforms may have broken binary compatibility |
| 3292 | due to changes in the defaults used in hints files. Therefore, please be |
| 3293 | sure to always check the platform-specific \s-1README\s0 files for any notes to |
| 3294 | the contrary. |
| 3295 | .PP |
| 3296 | The usethreads or usemultiplicity builds are \fBnot\fR binary compatible |
| 3297 | with the corresponding builds in 5.005. |
| 3298 | .PP |
| 3299 | On platforms that require an explicit list of exports (\s-1AIX\s0, \s-1OS/2\s0 and Windows, |
| 3300 | among others), purely internal symbols such as parser functions and the |
| 3301 | run time opcodes are not exported by default. Perl 5.005 used to export |
| 3302 | all functions irrespective of whether they were considered part of the |
| 3303 | public \s-1API\s0 or not. |
| 3304 | .PP |
| 3305 | For the full list of public \s-1API\s0 functions, see perlapi. |
| 3306 | .SH "Known Problems" |
| 3307 | .IX Header "Known Problems" |
| 3308 | .Sh "Localizing a tied hash element may leak memory" |
| 3309 | .IX Subsection "Localizing a tied hash element may leak memory" |
| 3310 | As of the 5.6.1 release, there is a known leak when code such as this |
| 3311 | is executed: |
| 3312 | .PP |
| 3313 | .Vb 2 |
| 3314 | \& use Tie::Hash; |
| 3315 | \& tie my %tie_hash => 'Tie::StdHash'; |
| 3316 | .Ve |
| 3317 | .PP |
| 3318 | .Vb 1 |
| 3319 | \& ... |
| 3320 | .Ve |
| 3321 | .PP |
| 3322 | .Vb 1 |
| 3323 | \& local($tie_hash{Foo}) = 1; # leaks |
| 3324 | .Ve |
| 3325 | .Sh "Known test failures" |
| 3326 | .IX Subsection "Known test failures" |
| 3327 | .IP "\(bu" 4 |
| 3328 | 64\-bit builds |
| 3329 | .Sp |
| 3330 | Subtest #15 of lib/b.t may fail under 64\-bit builds on platforms such |
| 3331 | as HP-UX \s-1PA64\s0 and Linux \s-1IA64\s0. The issue is still being investigated. |
| 3332 | .Sp |
| 3333 | The lib/io_multihomed test may hang in HP-UX if Perl has been |
| 3334 | configured to be 64\-bit. Because other 64\-bit platforms do not |
| 3335 | hang in this test, HP-UX is suspect. All other tests pass |
| 3336 | in 64\-bit \s-1HP\-UX\s0. The test attempts to create and connect to |
| 3337 | \&\*(L"multihomed\*(R" sockets (sockets which have multiple \s-1IP\s0 addresses). |
| 3338 | .Sp |
| 3339 | Note that 64\-bit support is still experimental. |
| 3340 | .IP "\(bu" 4 |
| 3341 | Failure of Thread tests |
| 3342 | .Sp |
| 3343 | The subtests 19 and 20 of lib/thr5005.t test are known to fail due to |
| 3344 | fundamental problems in the 5.005 threading implementation. These are |
| 3345 | not new failures\*(--Perl 5.005_0x has the same bugs, but didn't have these |
| 3346 | tests. (Note that support for 5.005\-style threading remains experimental.) |
| 3347 | .IP "\(bu" 4 |
| 3348 | \&\s-1NEXTSTEP\s0 3.3 \s-1POSIX\s0 test failure |
| 3349 | .Sp |
| 3350 | In \s-1NEXTSTEP\s0 3.3p2 the implementation of the \fIstrftime\fR\|(3) in the |
| 3351 | operating system libraries is buggy: the \f(CW%j\fR format numbers the days of |
| 3352 | a month starting from zero, which, while being logical to programmers, |
| 3353 | will cause the subtests 19 to 27 of the lib/posix test may fail. |
| 3354 | .IP "\(bu" 4 |
| 3355 | Tru64 (aka Digital \s-1UNIX\s0, aka \s-1DEC\s0 \s-1OSF/1\s0) lib/sdbm test failure with gcc |
| 3356 | .Sp |
| 3357 | If compiled with gcc 2.95 the lib/sdbm test will fail (dump core). |
| 3358 | The cure is to use the vendor cc, it comes with the operating system |
| 3359 | and produces good code. |
| 3360 | .Sh "\s-1EBCDIC\s0 platforms not fully supported" |
| 3361 | .IX Subsection "EBCDIC platforms not fully supported" |
| 3362 | In earlier releases of Perl, \s-1EBCDIC\s0 environments like \s-1OS390\s0 (also |
| 3363 | known as Open Edition \s-1MVS\s0) and VM-ESA were supported. Due to changes |
| 3364 | required by the \s-1UTF\-8\s0 (Unicode) support, the \s-1EBCDIC\s0 platforms are not |
| 3365 | supported in Perl 5.6.0. |
| 3366 | .PP |
| 3367 | The 5.6.1 release improves support for \s-1EBCDIC\s0 platforms, but they |
| 3368 | are not fully supported yet. |
| 3369 | .Sh "UNICOS/mk \s-1CC\s0 failures during Configure run" |
| 3370 | .IX Subsection "UNICOS/mk CC failures during Configure run" |
| 3371 | In UNICOS/mk the following errors may appear during the Configure run: |
| 3372 | .PP |
| 3373 | .Vb 6 |
| 3374 | \& Guessing which symbols your C compiler and preprocessor define... |
| 3375 | \& CC-20 cc: ERROR File = try.c, Line = 3 |
| 3376 | \& ... |
| 3377 | \& bad switch yylook 79bad switch yylook 79bad switch yylook 79bad switch yylook 79#ifdef A29K |
| 3378 | \& ... |
| 3379 | \& 4 errors detected in the compilation of "try.c". |
| 3380 | .Ve |
| 3381 | .PP |
| 3382 | The culprit is the broken awk of UNICOS/mk. The effect is fortunately |
| 3383 | rather mild: Perl itself is not adversely affected by the error, only |
| 3384 | the h2ph utility coming with Perl, and that is rather rarely needed |
| 3385 | these days. |
| 3386 | .Sh "Arrow operator and arrays" |
| 3387 | .IX Subsection "Arrow operator and arrays" |
| 3388 | When the left argument to the arrow operator \f(CW\*(C`\->\*(C'\fR is an array, or |
| 3389 | the \f(CW\*(C`scalar\*(C'\fR operator operating on an array, the result of the |
| 3390 | operation must be considered erroneous. For example: |
| 3391 | .PP |
| 3392 | .Vb 2 |
| 3393 | \& @x->[2] |
| 3394 | \& scalar(@x)->[2] |
| 3395 | .Ve |
| 3396 | .PP |
| 3397 | These expressions will get run-time errors in some future release of |
| 3398 | Perl. |
| 3399 | .Sh "Experimental features" |
| 3400 | .IX Subsection "Experimental features" |
| 3401 | As discussed above, many features are still experimental. Interfaces and |
| 3402 | implementation of these features are subject to change, and in extreme cases, |
| 3403 | even subject to removal in some future release of Perl. These features |
| 3404 | include the following: |
| 3405 | .IP "Threads" 4 |
| 3406 | .IX Item "Threads" |
| 3407 | .PD 0 |
| 3408 | .IP "Unicode" 4 |
| 3409 | .IX Item "Unicode" |
| 3410 | .IP "64\-bit support" 4 |
| 3411 | .IX Item "64-bit support" |
| 3412 | .IP "Lvalue subroutines" 4 |
| 3413 | .IX Item "Lvalue subroutines" |
| 3414 | .IP "Weak references" 4 |
| 3415 | .IX Item "Weak references" |
| 3416 | .IP "The pseudo-hash data type" 4 |
| 3417 | .IX Item "The pseudo-hash data type" |
| 3418 | .IP "The Compiler suite" 4 |
| 3419 | .IX Item "The Compiler suite" |
| 3420 | .IP "Internal implementation of file globbing" 4 |
| 3421 | .IX Item "Internal implementation of file globbing" |
| 3422 | .IP "The \s-1DB\s0 module" 4 |
| 3423 | .IX Item "The DB module" |
| 3424 | .IP "The regular expression code constructs:" 4 |
| 3425 | .IX Item "The regular expression code constructs:" |
| 3426 | .PD |
| 3427 | \&\f(CW\*(C`(?{ code })\*(C'\fR and \f(CW\*(C`(??{ code })\*(C'\fR |
| 3428 | .SH "Obsolete Diagnostics" |
| 3429 | .IX Header "Obsolete Diagnostics" |
| 3430 | .IP "Character class syntax [: :] is reserved for future extensions" 4 |
| 3431 | .IX Item "Character class syntax [: :] is reserved for future extensions" |
| 3432 | (W) Within regular expression character classes ([]) the syntax beginning |
| 3433 | with \*(L"[:\*(R" and ending with \*(L":]\*(R" is reserved for future extensions. |
| 3434 | If you need to represent those character sequences inside a regular |
| 3435 | expression character class, just quote the square brackets with the |
| 3436 | backslash: \*(L"\e[:\*(R" and \*(L":\e]\*(R". |
| 3437 | .IP "Ill-formed logical name |%s| in prime_env_iter" 4 |
| 3438 | .IX Item "Ill-formed logical name |%s| in prime_env_iter" |
| 3439 | (W) A warning peculiar to \s-1VMS\s0. A logical name was encountered when preparing |
| 3440 | to iterate over \f(CW%ENV\fR which violates the syntactic rules governing logical |
| 3441 | names. Because it cannot be translated normally, it is skipped, and will not |
| 3442 | appear in \f(CW%ENV\fR. This may be a benign occurrence, as some software packages |
| 3443 | might directly modify logical name tables and introduce nonstandard names, |
| 3444 | or it may indicate that a logical name table has been corrupted. |
| 3445 | .IP "In string, @%s now must be written as \e@%s" 4 |
| 3446 | .IX Item "In string, @%s now must be written as @%s" |
| 3447 | The description of this error used to say: |
| 3448 | .Sp |
| 3449 | .Vb 2 |
| 3450 | \& (Someday it will simply assume that an unbackslashed @ |
| 3451 | \& interpolates an array.) |
| 3452 | .Ve |
| 3453 | .Sp |
| 3454 | That day has come, and this fatal error has been removed. It has been |
| 3455 | replaced by a non-fatal warning instead. |
| 3456 | See \*(L"Arrays now always interpolate into double-quoted strings\*(R" for |
| 3457 | details. |
| 3458 | .ie n .IP "Probable precedence problem on %s" 4 |
| 3459 | .el .IP "Probable precedence problem on \f(CW%s\fR" 4 |
| 3460 | .IX Item "Probable precedence problem on %s" |
| 3461 | (W) The compiler found a bareword where it expected a conditional, |
| 3462 | which often indicates that an || or && was parsed as part of the |
| 3463 | last argument of the previous construct, for example: |
| 3464 | .Sp |
| 3465 | .Vb 1 |
| 3466 | \& open FOO || die; |
| 3467 | .Ve |
| 3468 | .IP "regexp too big" 4 |
| 3469 | .IX Item "regexp too big" |
| 3470 | (F) The current implementation of regular expressions uses shorts as |
| 3471 | address offsets within a string. Unfortunately this means that if |
| 3472 | the regular expression compiles to longer than 32767, it'll blow up. |
| 3473 | Usually when you want a regular expression this big, there is a better |
| 3474 | way to do it with multiple statements. See perlre. |
| 3475 | .ie n .IP "Use of ""$$<digit>"" to mean ""${$}<digit>"" is deprecated" 4 |
| 3476 | .el .IP "Use of ``$$<digit>'' to mean ``${$}<digit>'' is deprecated" 4 |
| 3477 | .IX Item "Use of $$<digit> to mean ${$}<digit> is deprecated" |
| 3478 | (D) Perl versions before 5.004 misinterpreted any type marker followed |
| 3479 | by \*(L"$\*(R" and a digit. For example, \*(L"$$0\*(R" was incorrectly taken to mean |
| 3480 | \&\*(L"${$}0\*(R" instead of \*(L"${$0}\*(R". This bug is (mostly) fixed in Perl 5.004. |
| 3481 | .Sp |
| 3482 | However, the developers of Perl 5.004 could not fix this bug completely, |
| 3483 | because at least two widely-used modules depend on the old meaning of |
| 3484 | \&\*(L"$$0\*(R" in a string. So Perl 5.004 still interprets \*(L"$$<digit>\*(R" in the |
| 3485 | old (broken) way inside strings; but it generates this message as a |
| 3486 | warning. And in Perl 5.005, this special treatment will cease. |
| 3487 | .SH "Reporting Bugs" |
| 3488 | .IX Header "Reporting Bugs" |
| 3489 | If you find what you think is a bug, you might check the |
| 3490 | articles recently posted to the comp.lang.perl.misc newsgroup. |
| 3491 | There may also be information at http://www.perl.com/ , the Perl |
| 3492 | Home Page. |
| 3493 | .PP |
| 3494 | If you believe you have an unreported bug, please run the \fBperlbug\fR |
| 3495 | program included with your release. Be sure to trim your bug down |
| 3496 | to a tiny but sufficient test case. Your bug report, along with the |
| 3497 | output of \f(CW\*(C`perl \-V\*(C'\fR, will be sent off to perlbug@perl.org to be |
| 3498 | analysed by the Perl porting team. |
| 3499 | .SH "SEE ALSO" |
| 3500 | .IX Header "SEE ALSO" |
| 3501 | The \fIChanges\fR file for exhaustive details on what changed. |
| 3502 | .PP |
| 3503 | The \fI\s-1INSTALL\s0\fR file for how to build Perl. |
| 3504 | .PP |
| 3505 | The \fI\s-1README\s0\fR file for general stuff. |
| 3506 | .PP |
| 3507 | The \fIArtistic\fR and \fICopying\fR files for copyright information. |
| 3508 | .SH "HISTORY" |
| 3509 | .IX Header "HISTORY" |
| 3510 | Written by Gurusamy Sarathy <\fIgsar@ActiveState.com\fR>, with many |
| 3511 | contributions from The Perl Porters. |
| 3512 | .PP |
| 3513 | Send omissions or corrections to <\fIperlbug@perl.org\fR>. |