Commit | Line | Data |
---|---|---|
920dae64 AT |
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>. |