Commit | Line | Data |
---|---|---|
86530b38 AT |
1 | .\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13 |
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 "PERL571DELTA 1" | |
132 | .TH PERL571DELTA 1 "2002-06-08" "perl v5.8.0" "Perl Programmers Reference Guide" | |
133 | .SH "NAME" | |
134 | perl571delta \- what's new for perl v5.7.1 | |
135 | .SH "DESCRIPTION" | |
136 | .IX Header "DESCRIPTION" | |
137 | This document describes differences between the 5.7.0 release and the | |
138 | 5.7.1 release. | |
139 | .PP | |
140 | (To view the differences between the 5.6.0 release and the 5.7.0 | |
141 | release, see perl570delta.) | |
142 | .SH "Security Vulnerability Closed" | |
143 | .IX Header "Security Vulnerability Closed" | |
144 | (This change was already made in 5.7.0 but bears repeating here.) | |
145 | .PP | |
146 | A potential security vulnerability in the optional suidperl component | |
147 | of Perl was identified in August 2000. suidperl is neither built nor | |
148 | installed by default. As of April 2001 the only known vulnerable | |
149 | platform is Linux, most likely all Linux distributions. \s-1CERT\s0 and | |
150 | various vendors and distributors have been alerted about the vulnerability. | |
151 | See http://www.cpan.org/src/5.0/sperl\-2000\-08\-05/sperl\-2000\-08\-05.txt | |
152 | for more information. | |
153 | .PP | |
154 | The problem was caused by Perl trying to report a suspected security | |
155 | exploit attempt using an external program, /bin/mail. On Linux | |
156 | platforms the /bin/mail program had an undocumented feature which | |
157 | when combined with suidperl gave access to a root shell, resulting in | |
158 | a serious compromise instead of reporting the exploit attempt. If you | |
159 | don't have /bin/mail, or if you have 'safe setuid scripts', or if | |
160 | suidperl is not installed, you are safe. | |
161 | .PP | |
162 | The exploit attempt reporting feature has been completely removed from | |
163 | all the Perl 5.7 releases (and will be gone also from the maintenance | |
164 | release 5.6.1), so that particular vulnerability isn't there anymore. | |
165 | However, further security vulnerabilities are, unfortunately, always | |
166 | possible. The suidperl code is being reviewed and if deemed too risky | |
167 | to continue to be supported, it may be completely removed from future | |
168 | releases. In any case, suidperl should only be used by security | |
169 | experts who know exactly what they are doing and why they are using | |
170 | suidperl instead of some other solution such as sudo | |
171 | ( see http://www.courtesan.com/sudo/ ). | |
172 | .SH "Incompatible Changes" | |
173 | .IX Header "Incompatible Changes" | |
174 | .IP "\(bu" 4 | |
175 | Although \*(L"you shouldn't do that\*(R", it was possible to write code that | |
176 | depends on Perl's hashed key order (Data::Dumper does this). The new | |
177 | algorithm \*(L"One\-at\-a\-Time\*(R" produces a different hashed key order. | |
178 | More details are in \*(L"Performance Enhancements\*(R". | |
179 | .IP "\(bu" 4 | |
180 | The list of filenames from \fIglob()\fR (or <...>) is now by default sorted | |
181 | alphabetically to be csh\-compliant. (\fIbsd_glob()\fR does still sort platform | |
182 | natively, \s-1ASCII\s0 or \s-1EBCDIC\s0, unless \s-1GLOB_ALPHASORT\s0 is specified.) | |
183 | .SH "Core Enhancements" | |
184 | .IX Header "Core Enhancements" | |
185 | .Sh "\s-1AUTOLOAD\s0 Is Now Lvaluable" | |
186 | .IX Subsection "AUTOLOAD Is Now Lvaluable" | |
187 | \&\s-1AUTOLOAD\s0 is now lvaluable, meaning that you can add the :lvalue attribute | |
188 | to \s-1AUTOLOAD\s0 subroutines and you can assign to the \s-1AUTOLOAD\s0 return value. | |
189 | .Sh "PerlIO is Now The Default" | |
190 | .IX Subsection "PerlIO is Now The Default" | |
191 | .IP "\(bu" 4 | |
192 | \&\s-1IO\s0 is now by default done via PerlIO rather than system's \*(L"stdio\*(R". | |
193 | PerlIO allows \*(L"layers\*(R" to be \*(L"pushed\*(R" onto a file handle to alter the | |
194 | handle's behaviour. Layers can be specified at open time via 3\-arg | |
195 | form of open: | |
196 | .Sp | |
197 | .Vb 1 | |
198 | \& open($fh,'>:crlf :utf8', $path) || ... | |
199 | .Ve | |
200 | .Sp | |
201 | or on already opened handles via extended \f(CW\*(C`binmode\*(C'\fR: | |
202 | .Sp | |
203 | .Vb 1 | |
204 | \& binmode($fh,':encoding(iso-8859-7)'); | |
205 | .Ve | |
206 | .Sp | |
207 | The built-in layers are: unix (low level read/write), stdio (as in | |
208 | previous Perls), perlio (re\-implementation of stdio buffering in a | |
209 | portable manner), crlf (does \s-1CRLF\s0 <=> \*(L"\en\*(R" translation as on Win32, | |
210 | but available on any platform). A mmap layer may be available if | |
211 | platform supports it (mostly UNIXes). | |
212 | .Sp | |
213 | Layers to be applied by default may be specified via the 'open' pragma. | |
214 | .Sp | |
215 | See \*(L"Installation and Configuration Improvements\*(R" for the effects | |
216 | of PerlIO on your architecture name. | |
217 | .IP "\(bu" 4 | |
218 | File handles can be marked as accepting Perl's internal encoding of Unicode | |
219 | (\s-1UTF\-8\s0 or UTF-EBCDIC depending on platform) by a pseudo layer \*(L":utf8\*(R" : | |
220 | .Sp | |
221 | .Vb 1 | |
222 | \& open($fh,">:utf8","Uni.txt"); | |
223 | .Ve | |
224 | .Sp | |
225 | Note for \s-1EBCDIC\s0 users: the pseudo layer \*(L":utf8\*(R" is erroneously named | |
226 | for you since it's not \s-1UTF\-8\s0 what you will be getting but instead | |
227 | \&\s-1UTF\-EBCDIC\s0. See perlunicode, utf8, and | |
228 | http://www.unicode.org/unicode/reports/tr16/ for more information. | |
229 | In future releases this naming may change. | |
230 | .IP "\(bu" 4 | |
231 | File handles can translate character encodings from/to Perl's internal | |
232 | Unicode form on read/write via the \*(L":\fIencoding()\fR\*(R" layer. | |
233 | .IP "\(bu" 4 | |
234 | File handles can be opened to \*(L"in memory\*(R" files held in Perl scalars via: | |
235 | .Sp | |
236 | .Vb 1 | |
237 | \& open($fh,'>', \e$variable) || ... | |
238 | .Ve | |
239 | .IP "\(bu" 4 | |
240 | Anonymous temporary files are available without need to | |
241 | \&'use FileHandle' or other module via | |
242 | .Sp | |
243 | .Vb 1 | |
244 | \& open($fh,"+>", undef) || ... | |
245 | .Ve | |
246 | .Sp | |
247 | That is a literal undef, not an undefined value. | |
248 | .IP "\(bu" 4 | |
249 | The list form of \f(CW\*(C`open\*(C'\fR is now implemented for pipes (at least on \s-1UNIX\s0): | |
250 | .Sp | |
251 | .Vb 1 | |
252 | \& open($fh,"-|", 'cat', '/etc/motd') | |
253 | .Ve | |
254 | .Sp | |
255 | creates a pipe, and runs the equivalent of exec('cat', '/etc/motd') in | |
256 | the child process. | |
257 | .IP "\(bu" 4 | |
258 | The following builtin functions are now overridable: \fIchop()\fR, \fIchomp()\fR, | |
259 | \&\fIeach()\fR, \fIkeys()\fR, \fIpop()\fR, \fIpush()\fR, \fIshift()\fR, \fIsplice()\fR, \fIunshift()\fR. | |
260 | .IP "\(bu" 4 | |
261 | Formats now support zero-padded decimal fields. | |
262 | .IP "\(bu" 4 | |
263 | Perl now tries internally to use integer values in numeric conversions | |
264 | and basic arithmetics (+ \- * /) if the arguments are integers, and | |
265 | tries also to keep the results stored internally as integers. | |
266 | This change leads into often slightly faster and always less lossy | |
267 | arithmetics. (Previously Perl always preferred floating point numbers | |
268 | in its math.) | |
269 | .IP "\(bu" 4 | |
270 | The \fIprintf()\fR and \fIsprintf()\fR now support parameter reordering using the | |
271 | \&\f(CW\*(C`%\ed+\e$\*(C'\fR and \f(CW\*(C`*\ed+\e$\*(C'\fR syntaxes. For example | |
272 | .Sp | |
273 | .Vb 1 | |
274 | \& print "%2\e$s %1\e$s\en", "foo", "bar"; | |
275 | .Ve | |
276 | .Sp | |
277 | will print \*(L"bar foo\en\*(R"; This feature helps in writing | |
278 | internationalised software. | |
279 | .IP "\(bu" 4 | |
280 | Unicode in general should be now much more usable. Unicode can be | |
281 | used in hash keys, Unicode in regular expressions should work now, | |
282 | Unicode in tr/// should work now (though tr/// seems to be a | |
283 | particularly tricky to get right, so you have been warned) | |
284 | .IP "\(bu" 4 | |
285 | The Unicode Character Database coming with Perl has been upgraded | |
286 | to Unicode 3.1. For more information, see http://www.unicode.org/ , | |
287 | and http://www.unicode.org/unicode/reports/tr27/ | |
288 | .Sp | |
289 | For developers interested in enhancing Perl's Unicode capabilities: | |
290 | almost all the \s-1UCD\s0 files are included with the Perl distribution in | |
291 | the lib/unicode subdirectory. The most notable omission, for space | |
292 | considerations, is the Unihan database. | |
293 | .IP "\(bu" 4 | |
294 | The Unicode character classes \ep{Blank} and \ep{SpacePerl} have been | |
295 | added. \*(L"Blank\*(R" is like C \fIisblank()\fR, that is, it contains only | |
296 | \&\*(L"horizontal whitespace\*(R" (the space character is, the newline isn't), | |
297 | and the \*(L"SpacePerl\*(R" is the Unicode equivalent of \f(CW\*(C`\es\*(C'\fR (\ep{Space} | |
298 | isn't, since that includes the vertical tabulator character, whereas | |
299 | \&\f(CW\*(C`\es\*(C'\fR doesn't.) | |
300 | .Sh "Signals Are Now Safe" | |
301 | .IX Subsection "Signals Are Now Safe" | |
302 | Perl used to be fragile in that signals arriving at inopportune moments | |
303 | could corrupt Perl's internal state. | |
304 | .SH "Modules and Pragmata" | |
305 | .IX Header "Modules and Pragmata" | |
306 | .Sh "New Modules" | |
307 | .IX Subsection "New Modules" | |
308 | .IP "\(bu" 4 | |
309 | B::Concise, by Stephen McCamant, is a new compiler backend for | |
310 | walking the Perl syntax tree, printing concise info about ops. | |
311 | The output is highly customisable. | |
312 | .Sp | |
313 | See B::Concise for more information. | |
314 | .IP "\(bu" 4 | |
315 | Class::ISA, by Sean Burke, for reporting the search path for a | |
316 | class's \s-1ISA\s0 tree, has been added. | |
317 | .Sp | |
318 | See Class::ISA for more information. | |
319 | .IP "\(bu" 4 | |
320 | Cwd has now a split personality: if possible, an extension is used, | |
321 | (this will hopefully be both faster and more secure and robust) but | |
322 | if not possible, the familiar Perl library implementation is used. | |
323 | .IP "\(bu" 4 | |
324 | Digest, a frontend module for calculating digests (checksums), | |
325 | from Gisle Aas, has been added. | |
326 | .Sp | |
327 | See Digest for more information. | |
328 | .IP "\(bu" 4 | |
329 | Digest::MD5 for calculating \s-1MD5\s0 digests (checksums), by Gisle Aas, | |
330 | has been added. | |
331 | .Sp | |
332 | .Vb 1 | |
333 | \& use Digest::MD5 'md5_hex'; | |
334 | .Ve | |
335 | .Sp | |
336 | .Vb 1 | |
337 | \& $digest = md5_hex("Thirsty Camel"); | |
338 | .Ve | |
339 | .Sp | |
340 | .Vb 1 | |
341 | \& print $digest, "\en"; # 01d19d9d2045e005c3f1b80e8b164de1 | |
342 | .Ve | |
343 | .Sp | |
344 | \&\s-1NOTE:\s0 the \s-1MD5\s0 backward compatibility module is deliberately not | |
345 | included since its use is discouraged. | |
346 | .Sp | |
347 | See Digest::MD5 for more information. | |
348 | .IP "\(bu" 4 | |
349 | Encode, by Nick Ing\-Simmons, provides a mechanism to translate | |
350 | between different character encodings. Support for Unicode, | |
351 | ISO\-8859\-*, \s-1ASCII\s0, CP*, \s-1KOI8\-R\s0, and three variants of \s-1EBCDIC\s0 are | |
352 | compiled in to the module. Several other encodings (like Japanese, | |
353 | Chinese, and MacIntosh encodings) are included and will be loaded at | |
354 | runtime. | |
355 | .Sp | |
356 | Any encoding supported by Encode module is also available to the | |
357 | \&\*(L":\fIencoding()\fR\*(R" layer if PerlIO is used. | |
358 | .Sp | |
359 | See Encode for more information. | |
360 | .IP "\(bu" 4 | |
361 | Filter::Simple is an easy-to-use frontend to Filter::Util::Call, | |
362 | from Damian Conway. | |
363 | .Sp | |
364 | .Vb 1 | |
365 | \& # in MyFilter.pm: | |
366 | .Ve | |
367 | .Sp | |
368 | .Vb 1 | |
369 | \& package MyFilter; | |
370 | .Ve | |
371 | .Sp | |
372 | .Vb 5 | |
373 | \& use Filter::Simple sub { | |
374 | \& while (my ($from, $to) = splice @_, 0, 2) { | |
375 | \& s/$from/$to/g; | |
376 | \& } | |
377 | \& }; | |
378 | .Ve | |
379 | .Sp | |
380 | .Vb 1 | |
381 | \& 1; | |
382 | .Ve | |
383 | .Sp | |
384 | .Vb 1 | |
385 | \& # in user's code: | |
386 | .Ve | |
387 | .Sp | |
388 | .Vb 1 | |
389 | \& use MyFilter qr/red/ => 'green'; | |
390 | .Ve | |
391 | .Sp | |
392 | .Vb 2 | |
393 | \& print "red\en"; # this code is filtered, will print "green\en" | |
394 | \& print "bored\en"; # this code is filtered, will print "bogreen\en" | |
395 | .Ve | |
396 | .Sp | |
397 | .Vb 1 | |
398 | \& no MyFilter; | |
399 | .Ve | |
400 | .Sp | |
401 | .Vb 1 | |
402 | \& print "red\en"; # this code is not filtered, will print "red\en" | |
403 | .Ve | |
404 | .Sp | |
405 | See Filter::Simple for more information. | |
406 | .IP "\(bu" 4 | |
407 | Filter::Util::Call, by Paul Marquess, provides you with the | |
408 | framework to write \fISource Filters\fR in Perl. For most uses | |
409 | the frontend Filter::Simple is to be preferred. | |
410 | See Filter::Util::Call for more information. | |
411 | .IP "\(bu" 4 | |
412 | Locale::Constants, Locale::Country, Locale::Currency, and Locale::Language, | |
413 | from Neil Bowers, have been added. They provide the codes for various | |
414 | locale standards, such as \*(L"fr\*(R" for France, \*(L"usd\*(R" for \s-1US\s0 Dollar, and | |
415 | \&\*(L"jp\*(R" for Japanese. | |
416 | .Sp | |
417 | .Vb 1 | |
418 | \& use Locale::Country; | |
419 | .Ve | |
420 | .Sp | |
421 | .Vb 2 | |
422 | \& $country = code2country('jp'); # $country gets 'Japan' | |
423 | \& $code = country2code('Norway'); # $code gets 'no' | |
424 | .Ve | |
425 | .Sp | |
426 | See Locale::Constants, Locale::Country, Locale::Currency, | |
427 | and Locale::Language for more information. | |
428 | .IP "\(bu" 4 | |
429 | MIME::Base64, by Gisle Aas, allows you to encode data in base64. | |
430 | .Sp | |
431 | .Vb 1 | |
432 | \& use MIME::Base64; | |
433 | .Ve | |
434 | .Sp | |
435 | .Vb 2 | |
436 | \& $encoded = encode_base64('Aladdin:open sesame'); | |
437 | \& $decoded = decode_base64($encoded); | |
438 | .Ve | |
439 | .Sp | |
440 | .Vb 1 | |
441 | \& print $encoded, "\en"; # "QWxhZGRpbjpvcGVuIHNlc2FtZQ==" | |
442 | .Ve | |
443 | .Sp | |
444 | See MIME::Base64 for more information. | |
445 | .IP "\(bu" 4 | |
446 | MIME::QuotedPrint, by Gisle Aas, allows you to encode data in | |
447 | quoted-printable encoding. | |
448 | .Sp | |
449 | .Vb 1 | |
450 | \& use MIME::QuotedPrint; | |
451 | .Ve | |
452 | .Sp | |
453 | .Vb 2 | |
454 | \& $encoded = encode_qp("Smiley in Unicode: \ex{263a}"); | |
455 | \& $decoded = decode_qp($encoded); | |
456 | .Ve | |
457 | .Sp | |
458 | .Vb 1 | |
459 | \& print $encoded, "\en"; # "Smiley in Unicode: =263A" | |
460 | .Ve | |
461 | .Sp | |
462 | MIME::QuotedPrint has been enhanced to provide the basic methods | |
463 | necessary to use it with PerlIO::Via as in : | |
464 | .Sp | |
465 | .Vb 2 | |
466 | \& use MIME::QuotedPrint; | |
467 | \& open($fh,">Via(MIME::QuotedPrint)",$path) | |
468 | .Ve | |
469 | .Sp | |
470 | See MIME::QuotedPrint for more information. | |
471 | .IP "\(bu" 4 | |
472 | PerlIO::Scalar, by Nick Ing\-Simmons, provides the implementation of | |
473 | \&\s-1IO\s0 to \*(L"in memory\*(R" Perl scalars as discussed above. It also serves as | |
474 | an example of a loadable layer. Other future possibilities include | |
475 | PerlIO::Array and PerlIO::Code. See PerlIO::Scalar for more | |
476 | information. | |
477 | .IP "\(bu" 4 | |
478 | PerlIO::Via, by Nick Ing\-Simmons, acts as a PerlIO layer and wraps | |
479 | PerlIO layer functionality provided by a class (typically implemented | |
480 | in perl code). | |
481 | .Sp | |
482 | .Vb 2 | |
483 | \& use MIME::QuotedPrint; | |
484 | \& open($fh,">Via(MIME::QuotedPrint)",$path) | |
485 | .Ve | |
486 | .Sp | |
487 | This will automatically convert everything output to \f(CW$fh\fR | |
488 | to Quoted\-Printable. See PerlIO::Via for more information. | |
489 | .IP "\(bu" 4 | |
490 | Pod::Text::Overstrike, by Joe Smith, has been added. | |
491 | It converts \s-1POD\s0 data to formatted overstrike text. | |
492 | See Pod::Text::Overstrike for more information. | |
493 | .IP "\(bu" 4 | |
494 | Switch from Damian Conway has been added. Just by saying | |
495 | .Sp | |
496 | .Vb 1 | |
497 | \& use Switch; | |
498 | .Ve | |
499 | .Sp | |
500 | you have \f(CW\*(C`switch\*(C'\fR and \f(CW\*(C`case\*(C'\fR available in Perl. | |
501 | .Sp | |
502 | .Vb 1 | |
503 | \& use Switch; | |
504 | .Ve | |
505 | .Sp | |
506 | .Vb 1 | |
507 | \& switch ($val) { | |
508 | .Ve | |
509 | .Sp | |
510 | .Vb 11 | |
511 | \& case 1 { print "number 1" } | |
512 | \& case "a" { print "string a" } | |
513 | \& case [1..10,42] { print "number in list" } | |
514 | \& case (@array) { print "number in list" } | |
515 | \& case /\ew+/ { print "pattern" } | |
516 | \& case qr/\ew+/ { print "pattern" } | |
517 | \& case (%hash) { print "entry in hash" } | |
518 | \& case (\e%hash) { print "entry in hash" } | |
519 | \& case (\e&sub) { print "arg to subroutine" } | |
520 | \& else { print "previous case not true" } | |
521 | \& } | |
522 | .Ve | |
523 | .Sp | |
524 | See Switch for more information. | |
525 | .IP "\(bu" 4 | |
526 | Text::Balanced from Damian Conway has been added, for | |
527 | extracting delimited text sequences from strings. | |
528 | .Sp | |
529 | .Vb 1 | |
530 | \& use Text::Balanced 'extract_delimited'; | |
531 | .Ve | |
532 | .Sp | |
533 | .Vb 1 | |
534 | \& ($a, $b) = extract_delimited("'never say never', he never said", "'", ''); | |
535 | .Ve | |
536 | .Sp | |
537 | $a will be \*(L"'never say never'\*(R", \f(CW$b\fR will be ', he never said'. | |
538 | .Sp | |
539 | In addition to \fIextract_delimited()\fR there are also \fIextract_bracketed()\fR, | |
540 | \&\fIextract_quotelike()\fR, \fIextract_codeblock()\fR, \fIextract_variable()\fR, | |
541 | \&\fIextract_tagged()\fR, \fIextract_multiple()\fR, \fIgen_delimited_pat()\fR, and | |
542 | \&\fIgen_extract_tagged()\fR. With these you can implement rather advanced | |
543 | parsing algorithms. See Text::Balanced for more information. | |
544 | .IP "\(bu" 4 | |
545 | Tie::RefHash::Nestable, by Edward Avis, allows storing hash references | |
546 | (unlike the standard Tie::RefHash) The module is contained within | |
547 | Tie::RefHash. | |
548 | .IP "\(bu" 4 | |
549 | XS::Typemap, by Tim Jenness, is a test extension that exercises \s-1XS\s0 | |
550 | typemaps. Nothing gets installed but for extension writers the code | |
551 | is worth studying. | |
552 | .Sh "Updated And Improved Modules and Pragmata" | |
553 | .IX Subsection "Updated And Improved Modules and Pragmata" | |
554 | .IP "\(bu" 4 | |
555 | B::Deparse should be now more robust. It still far from providing a full | |
556 | round trip for any random piece of Perl code, though, and is under active | |
557 | development: expect more robustness in 5.7.2. | |
558 | .IP "\(bu" 4 | |
559 | Class::Struct can now define the classes in compile time. | |
560 | .IP "\(bu" 4 | |
561 | Math::BigFloat has undergone much fixing, and in addition the \fIfmod()\fR | |
562 | function now supports modulus operations. | |
563 | .Sp | |
564 | ( The fixed Math::BigFloat module is also available in \s-1CPAN\s0 for those | |
565 | who can't upgrade their Perl: http://www.cpan.org/authors/id/J/JP/JPEACOCK/ ) | |
566 | .IP "\(bu" 4 | |
567 | Devel::Peek now has an interface for the Perl memory statistics | |
568 | (this works only if you are using perl's malloc, and if you have | |
569 | compiled with debugging). | |
570 | .IP "\(bu" 4 | |
571 | IO::Socket has now \fIatmark()\fR method, which returns true if the socket | |
572 | is positioned at the out-of-band mark. The method is also exportable | |
573 | as a \fIsockatmark()\fR function. | |
574 | .IP "\(bu" 4 | |
575 | IO::Socket::INET has support for ReusePort option (if your platform | |
576 | supports it). The Reuse option now has an alias, ReuseAddr. For clarity | |
577 | you may want to prefer ReuseAddr. | |
578 | .IP "\(bu" 4 | |
579 | Net::Ping has been enhanced. There is now \*(L"external\*(R" protocol which | |
580 | uses Net::Ping::External module which runs external \fIping\fR\|(1) and parses | |
581 | the output. An alpha version of Net::Ping::External is available in | |
582 | \&\s-1CPAN\s0 and in 5.7.2 the Net::Ping::External may be integrated to Perl. | |
583 | .IP "\(bu" 4 | |
584 | The \f(CW\*(C`open\*(C'\fR pragma allows layers other than \*(L":raw\*(R" and \*(L":crlf\*(R" when | |
585 | using PerlIO. | |
586 | .IP "\(bu" 4 | |
587 | \&\fIPOSIX::sigaction()\fR is now much more flexible and robust. | |
588 | You can now install coderef handlers, '\s-1DEFAULT\s0', and '\s-1IGNORE\s0' | |
589 | handlers, installing new handlers was not atomic. | |
590 | .IP "\(bu" 4 | |
591 | The Test module has been significantly enhanced. Its use is | |
592 | greatly recommended for module writers. | |
593 | .IP "\(bu" 4 | |
594 | The utf8:: name space (as in the pragma) provides various | |
595 | Perl-callable functions to provide low level access to Perl's | |
596 | internal Unicode representation. At the moment only \fIlength()\fR | |
597 | has been implemented. | |
598 | .PP | |
599 | The following modules have been upgraded from the versions at \s-1CPAN:\s0 | |
600 | \&\s-1CPAN\s0, \s-1CGI\s0, DB_File, File::Temp, Getopt::Long, Pod::Man, Pod::Text, | |
601 | Storable, Text\-Tabs+Wrap. | |
602 | .SH "Performance Enhancements" | |
603 | .IX Header "Performance Enhancements" | |
604 | .IP "\(bu" 4 | |
605 | Hashes now use Bob Jenkins \*(L"One\-at\-a\-Time\*(R" hashing key algorithm | |
606 | ( http://burtleburtle.net/bob/hash/doobs.html ). This algorithm is | |
607 | reasonably fast while producing a much better spread of values than | |
608 | the old hashing algorithm (originally by Chris Torek, later tweaked by | |
609 | Ilya Zakharevich). Hash values output from the algorithm on a hash of | |
610 | all 3\-char printable \s-1ASCII\s0 keys comes much closer to passing the | |
611 | \&\s-1DIEHARD\s0 random number generation tests. According to perlbench, this | |
612 | change has not affected the overall speed of Perl. | |
613 | .IP "\(bu" 4 | |
614 | \&\fIunshift()\fR should now be noticeably faster. | |
615 | .SH "Utility Changes" | |
616 | .IX Header "Utility Changes" | |
617 | .IP "\(bu" 4 | |
618 | h2xs now produces template \s-1README\s0. | |
619 | .IP "\(bu" 4 | |
620 | s2p has been completely rewritten in Perl. (It is in fact a full | |
621 | implementation of sed in Perl.) | |
622 | .IP "\(bu" 4 | |
623 | xsubpp now supports \s-1OUT\s0 keyword. | |
624 | .SH "New Documentation" | |
625 | .IX Header "New Documentation" | |
626 | .Sh "perlclib" | |
627 | .IX Subsection "perlclib" | |
628 | Internal replacements for standard C library functions. | |
629 | (Interesting only for extension writers and Perl core hackers.) | |
630 | .Sh "perliol" | |
631 | .IX Subsection "perliol" | |
632 | Internals of PerlIO with layers. | |
633 | .Sh "\s-1README\s0.aix" | |
634 | .IX Subsection "README.aix" | |
635 | Documentation on compiling Perl on \s-1AIX\s0 has been added. \s-1AIX\s0 has | |
636 | several different C compilers and getting the right patch level | |
637 | is essential. On install \s-1README\s0.aix will be installed as perlaix. | |
638 | .Sh "\s-1README\s0.bs2000" | |
639 | .IX Subsection "README.bs2000" | |
640 | Documentation on compiling Perl on the POSIX-BC platform (an \s-1EBCDIC\s0 | |
641 | mainframe environment) has been added. | |
642 | .PP | |
643 | This was formerly known as \s-1README\s0.posix\-bc but the name was considered | |
644 | to be too confusing (it has nothing to do with the \s-1POSIX\s0 module or the | |
645 | \&\s-1POSIX\s0 standard). On install \s-1README\s0.bs2000 will be installed as perlbs2000. | |
646 | .Sh "\s-1README\s0.macos" | |
647 | .IX Subsection "README.macos" | |
648 | In perl 5.7.1 (and in the 5.6.1) the MacPerl sources have been | |
649 | synchronised with the standard Perl sources. To compile MacPerl | |
650 | some additional steps are required, and this file documents those | |
651 | steps. On install \s-1README\s0.macos will be installed as perlmacos. | |
652 | .Sh "\s-1README\s0.mpeix" | |
653 | .IX Subsection "README.mpeix" | |
654 | The \s-1README\s0.mpeix has been podified, which means that this information | |
655 | about compiling and using Perl on the MPE/iX miniframe platform will | |
656 | be installed as perlmpeix. | |
657 | .Sh "\s-1README\s0.solaris" | |
658 | .IX Subsection "README.solaris" | |
659 | \&\s-1README\s0.solaris has been created and Solaris wisdom from elsewhere | |
660 | in the Perl documentation has been collected there. On install | |
661 | \&\s-1README\s0.solaris will be installed as perlsolaris. | |
662 | .Sh "\s-1README\s0.vos" | |
663 | .IX Subsection "README.vos" | |
664 | The \s-1README\s0.vos has been podified, which means that this information | |
665 | about compiling and using Perl on the Stratus \s-1VOS\s0 miniframe platform | |
666 | will be installed as perlvos. | |
667 | .Sh "Porting/repository.pod" | |
668 | .IX Subsection "Porting/repository.pod" | |
669 | Documentation on how to use the Perl source repository has been added. | |
670 | .SH "Installation and Configuration Improvements" | |
671 | .IX Header "Installation and Configuration Improvements" | |
672 | .IP "\(bu" 4 | |
673 | Because PerlIO is now the default on most platforms, \*(L"\-perlio\*(R" doesn't | |
674 | get appended to the \f(CW$Config\fR{archname} (also known as $^O) anymore. | |
675 | Instead, if you explicitly choose not to use perlio (Configure command | |
676 | line option \-Uuseperlio), you will get \*(L"\-stdio\*(R" appended. | |
677 | .IP "\(bu" 4 | |
678 | Another change related to the architecture name is that \*(L"\-64all\*(R" | |
679 | (\-Duse64bitall, or \*(L"maximally 64\-bit\*(R") is appended only if your | |
680 | pointers are 64 bits wide. (To be exact, the use64bitall is ignored.) | |
681 | .IP "\(bu" 4 | |
682 | \&\s-1APPLLIB_EXP\s0, a less-know configuration-time definition, has been | |
683 | documented. It can be used to prepend site-specific directories | |
684 | to Perl's default search path (@INC), see \s-1INSTALL\s0 for information. | |
685 | .IP "\(bu" 4 | |
686 | Building Berkeley \s-1DB3\s0 for compatibility modes for \s-1DB\s0, \s-1NDBM\s0, and \s-1ODBM\s0 | |
687 | has been documented in \s-1INSTALL\s0. | |
688 | .IP "\(bu" 4 | |
689 | If you are on \s-1IRIX\s0 or Tru64 platforms, new profiling/debugging options | |
690 | have been added, see perlhack for more information about pixie and | |
691 | Third Degree. | |
692 | .Sh "New Or Improved Platforms" | |
693 | .IX Subsection "New Or Improved Platforms" | |
694 | For the list of platforms known to support Perl, | |
695 | see \*(L"Supported Platforms\*(R" in perlport. | |
696 | .IP "\(bu" 4 | |
697 | \&\s-1AIX\s0 dynamic loading should be now better supported. | |
698 | .IP "\(bu" 4 | |
699 | After a long pause, AmigaOS has been verified to be happy with Perl. | |
700 | .IP "\(bu" 4 | |
701 | \&\s-1EBCDIC\s0 platforms (z/OS, also known as \s-1OS/390\s0, \s-1POSIX\-BC\s0, and \s-1VM/ESA\s0) | |
702 | have been regained. Many test suite tests still fail and the | |
703 | co-existence of Unicode and \s-1EBCDIC\s0 isn't quite settled, but the | |
704 | situation is much better than with Perl 5.6. See perlos390, | |
705 | perlbs2000 (for \s-1POSIX\-BC\s0), and perlvmesa for more information. | |
706 | .IP "\(bu" 4 | |
707 | Building perl with \-Duseithreads or \-Duse5005threads now works under | |
708 | HP-UX 10.20 (previously it only worked under 10.30 or later). You will | |
709 | need a thread library package installed. See \s-1README\s0.hpux. | |
710 | .IP "\(bu" 4 | |
711 | Mac \s-1OS\s0 Classic (MacPerl has of course been available since | |
712 | perl 5.004 but now the source code bases of standard Perl | |
713 | and MacPerl have been synchronised) | |
714 | .IP "\(bu" 4 | |
715 | \&\s-1NCR\s0 MP-RAS is now supported. | |
716 | .IP "\(bu" 4 | |
717 | NonStop-UX is now supported. | |
718 | .IP "\(bu" 4 | |
719 | Amdahl \s-1UTS\s0 is now supported. | |
720 | .IP "\(bu" 4 | |
721 | z/OS (formerly known as \s-1OS/390\s0, formerly known as \s-1MVS\s0 \s-1OE\s0) has now | |
722 | support for dynamic loading. This is not selected by default, | |
723 | however, you must specify \-Dusedl in the arguments of Configure. | |
724 | .Sh "Generic Improvements" | |
725 | .IX Subsection "Generic Improvements" | |
726 | .IP "\(bu" 4 | |
727 | Configure no longer includes the \s-1DBM\s0 libraries (dbm, gdbm, db, ndbm) | |
728 | when building the Perl binary. The only exception to this is SunOS 4.x, | |
729 | which needs them. | |
730 | .IP "\(bu" 4 | |
731 | Some new Configure symbols, useful for extension writers: | |
732 | .RS 4 | |
733 | .IP "d_cmsghdr" 8 | |
734 | .IX Item "d_cmsghdr" | |
735 | For struct cmsghdr. | |
736 | .IP "d_fcntl_can_lock" 8 | |
737 | .IX Item "d_fcntl_can_lock" | |
738 | Whether \fIfcntl()\fR can be used for file locking. | |
739 | .IP "d_fsync" 8 | |
740 | .IX Item "d_fsync" | |
741 | .PD 0 | |
742 | .IP "d_getitimer" 8 | |
743 | .IX Item "d_getitimer" | |
744 | .IP "d_getpagsz" 8 | |
745 | .IX Item "d_getpagsz" | |
746 | .PD | |
747 | For \fIgetpagesize()\fR, though you should prefer POSIX::sysconf(_SC_PAGE_SIZE)) | |
748 | .IP "d_msghdr_s" 8 | |
749 | .IX Item "d_msghdr_s" | |
750 | For struct msghdr. | |
751 | .IP "need_va_copy" 8 | |
752 | .IX Item "need_va_copy" | |
753 | Whether one needs to use \fIPerl_va_copy()\fR to copy varargs. | |
754 | .IP "d_readv" 8 | |
755 | .IX Item "d_readv" | |
756 | .PD 0 | |
757 | .IP "d_recvmsg" 8 | |
758 | .IX Item "d_recvmsg" | |
759 | .IP "d_sendmsg" 8 | |
760 | .IX Item "d_sendmsg" | |
761 | .IP "sig_size" 8 | |
762 | .IX Item "sig_size" | |
763 | .PD | |
764 | The number of elements in an array needed to hold all the available signals. | |
765 | .IP "d_sockatmark" 8 | |
766 | .IX Item "d_sockatmark" | |
767 | .PD 0 | |
768 | .IP "d_strtoq" 8 | |
769 | .IX Item "d_strtoq" | |
770 | .IP "d_u32align" 8 | |
771 | .IX Item "d_u32align" | |
772 | .PD | |
773 | Whether one needs to access character data aligned by U32 sized pointers. | |
774 | .IP "d_ualarm" 8 | |
775 | .IX Item "d_ualarm" | |
776 | .PD 0 | |
777 | .IP "d_usleep" 8 | |
778 | .IX Item "d_usleep" | |
779 | .RE | |
780 | .RS 4 | |
781 | .RE | |
782 | .IP "\(bu" 4 | |
783 | .PD | |
784 | Removed Configure symbols: the \s-1PDP\-11\s0 memory model settings: huge, | |
785 | large, medium, models. | |
786 | .IP "\(bu" 4 | |
787 | \&\s-1SOCKS\s0 support is now much more robust. | |
788 | .IP "\(bu" 4 | |
789 | If your file system supports symbolic links you can build Perl outside | |
790 | of the source directory by | |
791 | .Sp | |
792 | .Vb 3 | |
793 | \& mkdir /tmp/perl/build/directory | |
794 | \& cd /tmp/perl/build/directory | |
795 | \& sh /path/to/perl/source/Configure -Dmksymlinks ... | |
796 | .Ve | |
797 | .Sp | |
798 | This will create in /tmp/perl/build/directory a tree of symbolic links | |
799 | pointing to files in /path/to/perl/source. The original files are left | |
800 | unaffected. After Configure has finished you can just say | |
801 | .Sp | |
802 | .Vb 1 | |
803 | \& make all test | |
804 | .Ve | |
805 | .Sp | |
806 | and Perl will be built and tested, all in /tmp/perl/build/directory. | |
807 | .SH "Selected Bug Fixes" | |
808 | .IX Header "Selected Bug Fixes" | |
809 | Numerous memory leaks and uninitialized memory accesses have been hunted down. | |
810 | Most importantly anonymous subs used to leak quite a bit. | |
811 | .IP "\(bu" 4 | |
812 | chop(@list) in list context returned the characters chopped in | |
813 | reverse order. This has been reversed to be in the right order. | |
814 | .IP "\(bu" 4 | |
815 | The order of DESTROYs has been made more predictable. | |
816 | .IP "\(bu" 4 | |
817 | \&\fImkdir()\fR now ignores trailing slashes in the directory name, | |
818 | as mandated by \s-1POSIX\s0. | |
819 | .IP "\(bu" 4 | |
820 | Attributes (like :shared) didn't work with \fIour()\fR. | |
821 | .IP "\(bu" 4 | |
822 | The \s-1PERL5OPT\s0 environment variable (for passing command line arguments | |
823 | to Perl) didn't work for more than a single group of options. | |
824 | .IP "\(bu" 4 | |
825 | The tainting behaviour of \fIsprintf()\fR has been rationalized. It does | |
826 | not taint the result of floating point formats anymore, making the | |
827 | behaviour consistent with that of string interpolation. | |
828 | .IP "\(bu" 4 | |
829 | All but the first argument of the \s-1IO\s0 \fIsyswrite()\fR method are now optional. | |
830 | .IP "\(bu" 4 | |
831 | Tie::ARRAY \s-1SPLICE\s0 method was broken. | |
832 | .IP "\(bu" 4 | |
833 | \&\fIvec()\fR now tries to work with characters <= 255 when possible, but it leaves | |
834 | higher character values in place. In that case, if \fIvec()\fR was used to modify | |
835 | the string, it is no longer considered to be utf8\-encoded. | |
836 | .Sh "Platform Specific Changes and Fixes" | |
837 | .IX Subsection "Platform Specific Changes and Fixes" | |
838 | .IP "\(bu" 4 | |
839 | Linux previously had problems related to sockaddrlen when using | |
840 | \&\fIaccept()\fR, \fIrevcfrom()\fR (in Perl: \fIrecv()\fR), \fIgetpeername()\fR, and \fIgetsockname()\fR. | |
841 | .IP "\(bu" 4 | |
842 | Previously DYNIX/ptx had problems in its Configure probe for non-blocking I/O. | |
843 | .IP "\(bu" 4 | |
844 | Windows | |
845 | .RS 4 | |
846 | .IP "\(bu" 8 | |
847 | Borland \*(C+ v5.5 is now a supported compiler that can build Perl. | |
848 | However, the generated binaries continue to be incompatible with those | |
849 | generated by the other supported compilers (\s-1GCC\s0 and Visual \*(C+). | |
850 | .IP "\(bu" 8 | |
851 | \&\fIWin32::GetCwd()\fR correctly returns C:\e instead of C: when at the drive root. | |
852 | Other bugs in \fIchdir()\fR and \fICwd::cwd()\fR have also been fixed. | |
853 | .IP "\(bu" 8 | |
854 | Duping socket handles with open(F, \*(L">&MYSOCK\*(R") now works under Windows 9x. | |
855 | .IP "\(bu" 8 | |
856 | \&\s-1HTML\s0 files will be installed in c:\eperl\ehtml instead of c:\eperl\elib\epod\ehtml | |
857 | .IP "\(bu" 8 | |
858 | The makefiles now provide a single switch to bulk-enable all the features | |
859 | enabled in ActiveState ActivePerl (a popular binary distribution). | |
860 | .RE | |
861 | .RS 4 | |
862 | .RE | |
863 | .SH "New or Changed Diagnostics" | |
864 | .IX Header "New or Changed Diagnostics" | |
865 | Two new debugging options have been added: if you have compiled your | |
866 | Perl with debugging, you can use the \-DT and \-DR options to trace | |
867 | tokenising and to add reference counts to displaying variables, | |
868 | respectively. | |
869 | .IP "\(bu" 4 | |
870 | If an attempt to use a (non\-blessed) reference as an array index | |
871 | is made, a warning is given. | |
872 | .IP "\(bu" 4 | |
873 | \&\f(CW\*(C`push @a;\*(C'\fR and \f(CW\*(C`unshift @a;\*(C'\fR (with no values to push or unshift) | |
874 | now give a warning. This may be a problem for generated and evaled | |
875 | code. | |
876 | .SH "Changed Internals" | |
877 | .IX Header "Changed Internals" | |
878 | .IP "\(bu" 4 | |
879 | Some new APIs: \fIptr_table_clear()\fR, \fIptr_table_free()\fR, \fIsv_setref_uv()\fR. | |
880 | For the full list of the available APIs see perlapi. | |
881 | .IP "\(bu" 4 | |
882 | dTHR and djSP have been obsoleted; the former removed (because it's | |
883 | a no\-op) and the latter replaced with dSP. | |
884 | .IP "\(bu" 4 | |
885 | Perl now uses system malloc instead of Perl malloc on all 64\-bit | |
886 | platforms, and even in some not\-always\-64\-bit platforms like \s-1AIX\s0, | |
887 | \&\s-1IRIX\s0, and Solaris. This change breaks backward compatibility but | |
888 | Perl's malloc has problems with large address spaces and also the | |
889 | speed of vendors' malloc is generally better in large address space | |
890 | machines (Perl's malloc is mostly tuned for space). | |
891 | .SH "New Tests" | |
892 | .IX Header "New Tests" | |
893 | Many new tests have been added. The most notable is probably the | |
894 | lib/1_compile: it is very notable because running it takes quite a | |
895 | long time \*(-- it test compiles all the Perl modules in the distribution. | |
896 | Please be patient. | |
897 | .SH "Known Problems" | |
898 | .IX Header "Known Problems" | |
899 | Note that unlike other sections in this document (which describe | |
900 | changes since 5.7.0) this section is cumulative containing known | |
901 | problems for all the 5.7 releases. | |
902 | .Sh "\s-1AIX\s0 vac 5.0.0.0 May Produce Buggy Code For Perl" | |
903 | .IX Subsection "AIX vac 5.0.0.0 May Produce Buggy Code For Perl" | |
904 | The \s-1AIX\s0 C compiler vac version 5.0.0.0 may produce buggy code, | |
905 | resulting in few random tests failing, but when the failing tests | |
906 | are run by hand, they succeed. We suggest upgrading to at least | |
907 | vac version 5.0.1.0, that has been known to compile Perl correctly. | |
908 | \&\*(L"lslpp \-L|grep vac.C\*(R" will tell you the vac version. | |
909 | .Sh "lib/ftmp\-security tests warn 'system possibly insecure'" | |
910 | .IX Subsection "lib/ftmp-security tests warn 'system possibly insecure'" | |
911 | Don't panic. Read \s-1INSTALL\s0 'make test' section instead. | |
912 | .Sh "lib/io_multihomed Fails In LP64\-Configured HP-UX" | |
913 | .IX Subsection "lib/io_multihomed Fails In LP64-Configured HP-UX" | |
914 | The lib/io_multihomed test may hang in HP-UX if Perl has been | |
915 | configured to be 64\-bit. Because other 64\-bit platforms do not hang in | |
916 | this test, HP-UX is suspect. All other tests pass in 64\-bit \s-1HP\-UX\s0. The | |
917 | test attempts to create and connect to \*(L"multihomed\*(R" sockets (sockets | |
918 | which have multiple \s-1IP\s0 addresses). | |
919 | .Sh "Test lib/posix Subtest 9 Fails In LP64\-Configured HP-UX" | |
920 | .IX Subsection "Test lib/posix Subtest 9 Fails In LP64-Configured HP-UX" | |
921 | If perl is configured with \-Duse64bitall, the successful result of the | |
922 | subtest 10 of lib/posix may arrive before the successful result of the | |
923 | subtest 9, which confuses the test harness so much that it thinks the | |
924 | subtest 9 failed. | |
925 | .Sh "lib/b test 19" | |
926 | .IX Subsection "lib/b test 19" | |
927 | The test fails on various platforms (\s-1PA64\s0 and \s-1IA64\s0 are known), but the | |
928 | exact cause is still being investigated. | |
929 | .Sh "Linux With Sfio Fails op/misc Test 48" | |
930 | .IX Subsection "Linux With Sfio Fails op/misc Test 48" | |
931 | No known fix. | |
932 | .Sh "sigaction test 13 in \s-1VMS\s0" | |
933 | .IX Subsection "sigaction test 13 in VMS" | |
934 | The test is known to fail; whether it's because of \s-1VMS\s0 of because | |
935 | of faulty test is not known. | |
936 | .Sh "sprintf tests 129 and 130" | |
937 | .IX Subsection "sprintf tests 129 and 130" | |
938 | The op/sprintf tests 129 and 130 are known to fail on some platforms. | |
939 | Examples include any platform using sfio, and Compaq/Tandem's NonStop\-UX. | |
940 | The failing platforms do not comply with the \s-1ANSI\s0 C Standard, line | |
941 | 19ff on page 134 of \s-1ANSI\s0 X3.159 1989 to be exact. (They produce | |
942 | something else than \*(L"1\*(R" and \*(L"\-1\*(R" when formatting 0.6 and \-0.6 using | |
943 | the printf format \*(L"%.0f\*(R", most often they produce \*(L"0\*(R" and \*(L"\-0\*(R".) | |
944 | .Sh "Failure of Thread tests" | |
945 | .IX Subsection "Failure of Thread tests" | |
946 | The subtests 19 and 20 of lib/thr5005.t test are known to fail due to | |
947 | fundamental problems in the 5.005 threading implementation. These are | |
948 | not new failures\*(--Perl 5.005_0x has the same bugs, but didn't have | |
949 | these tests. (Note that support for 5.005\-style threading remains | |
950 | experimental.) | |
951 | .Sh "Localising a Tied Variable Leaks Memory" | |
952 | .IX Subsection "Localising a Tied Variable Leaks Memory" | |
953 | .Vb 2 | |
954 | \& use Tie::Hash; | |
955 | \& tie my %tie_hash => 'Tie::StdHash'; | |
956 | .Ve | |
957 | .PP | |
958 | .Vb 1 | |
959 | \& ... | |
960 | .Ve | |
961 | .PP | |
962 | .Vb 1 | |
963 | \& local($tie_hash{Foo}) = 1; # leaks | |
964 | .Ve | |
965 | .PP | |
966 | Code like the above is known to leak memory every time the \fIlocal()\fR | |
967 | is executed. | |
968 | .Sh "Self-tying of Arrays and Hashes Is Forbidden" | |
969 | .IX Subsection "Self-tying of Arrays and Hashes Is Forbidden" | |
970 | Self-tying of arrays and hashes is broken in rather deep and | |
971 | hard-to-fix ways. As a stop-gap measure to avoid people from getting | |
972 | frustrated at the mysterious results (core dumps, most often) it is | |
973 | for now forbidden (you will get a fatal error even from an attempt). | |
974 | .Sh "Building Extensions Can Fail Because Of Largefiles" | |
975 | .IX Subsection "Building Extensions Can Fail Because Of Largefiles" | |
976 | Some extensions like mod_perl are known to have issues with | |
977 | `largefiles', a change brought by Perl 5.6.0 in which file offsets | |
978 | default to 64 bits wide, where supported. Modules may fail to compile | |
979 | at all or compile and work incorrectly. Currently there is no good | |
980 | solution for the problem, but Configure now provides appropriate | |
981 | non-largefile ccflags, ldflags, libswanted, and libs in the \f(CW%Config\fR | |
982 | hash (e.g., \f(CW$Config\fR{ccflags_nolargefiles}) so the extensions that are | |
983 | having problems can try configuring themselves without the | |
984 | largefileness. This is admittedly not a clean solution, and the | |
985 | solution may not even work at all. One potential failure is whether | |
986 | one can (or, if one can, whether it's a good idea) link together at | |
987 | all binaries with different ideas about file offsets, all this is | |
988 | platform\-dependent. | |
989 | .Sh "The Compiler Suite Is Still Experimental" | |
990 | .IX Subsection "The Compiler Suite Is Still Experimental" | |
991 | The compiler suite is slowly getting better but is nowhere near | |
992 | working order yet. | |
993 | .SH "Reporting Bugs" | |
994 | .IX Header "Reporting Bugs" | |
995 | If you find what you think is a bug, you might check the articles | |
996 | recently posted to the comp.lang.perl.misc newsgroup and the perl | |
997 | bug database at http://bugs.perl.org/ There may also be | |
998 | information at http://www.perl.com/perl/ , the Perl Home Page. | |
999 | .PP | |
1000 | If you believe you have an unreported bug, please run the \fBperlbug\fR | |
1001 | program included with your release. Be sure to trim your bug down | |
1002 | to a tiny but sufficient test case. Your bug report, along with the | |
1003 | output of \f(CW\*(C`perl \-V\*(C'\fR, will be sent off to perlbug@perl.org to be | |
1004 | analysed by the Perl porting team. | |
1005 | .SH "SEE ALSO" | |
1006 | .IX Header "SEE ALSO" | |
1007 | The \fIChanges\fR file for exhaustive details on what changed. | |
1008 | .PP | |
1009 | The \fI\s-1INSTALL\s0\fR file for how to build Perl. | |
1010 | .PP | |
1011 | The \fI\s-1README\s0\fR file for general stuff. | |
1012 | .PP | |
1013 | The \fIArtistic\fR and \fICopying\fR files for copyright information. | |
1014 | .SH "HISTORY" | |
1015 | .IX Header "HISTORY" | |
1016 | Written by Jarkko Hietaniemi <\fIjhi@iki.fi\fR>, with many contributions | |
1017 | from The Perl Porters and Perl Users submitting feedback and patches. | |
1018 | .PP | |
1019 | Send omissions or corrections to <\fIperlbug@perl.org\fR>. |