a2p
accept
access
acct
addftinfo
addr2line
adjtime
afmtodit
after
aio_cancel
aio_error
aio_read
aio_return
aio_suspend
aio_waitcomplete
aio_write
alias
aliases
alloc
anvil
append
apply
apropos
ar
array
as
asa
asn1parse
at
atq
atrm
attemptckalloc
attemptckrealloc
authlib
authtest
autopoint
awk
b64decode
b64encode
basename
batch
bc
bdes
bell
bg
bgerror
biff
big5
binary
bind
bindkey
bindtags
bindtextdomain
bio
bitmap
blowfish
bn
bootparams
bootptab
bounce
brandelf
break
breaksw
brk
bsdiff
bsdtar
bsnmpd
bspatch
bthost
btsockstat
buffer
builtin
builtins
bunzip2
button
byacc
bzcat
bzegrep
bzfgrep
bzgrep
bzip2
c2ph
c89
c99
ca
cal
calendar
canvas
cap_mkdb
case
cat
catch
catman
cc
cd
cdcontrol
chdir
checkbutton
checknr
chflags
chfn
chgrp
chio
chkey
chmod
chown
chpass
chroot
chsh
ci
ciphers
ckalloc
ckdist
ckfree
ckrealloc
cksum
cleanup
clear
clipboard
clock
clock_getres
clock_gettime
clock_settime
close
cmp
co
col
colcrt
colldef
colors
colrm
column
comm
command
compile_et
complete
compress
concat
config
connect
console
continue
core
courierlogger
couriertcpd
cp
cpan
cpio
cpp
creat
crl
crontab
crunchgen
crunchide
crypt
crypto
csh
csplit
ctags
ctm
ctm_dequeue
ctm_rmail
ctm_smail
cu
cursor
cursors
cut
cvs
date
dbiprof
dbiproxy
dc
dcgettext
dcngettext
dd
dde
default
defer
deliverquota
des
destroy
devfs
df
dgettext
dgst
dh
dhparam
dialog
diff
diff3
dig
dir
dirent
dirname
dirs
discard
disktab
dngettext
do
domainname
done
dprofpp
dsa
dsaparam
dtmfdecode
du
dup
dup2
eaccess
ec
ecdsa
echo
echotc
ecparam
ed
edit
editrc
ee
egrep
elf
elfdump
elif
else
enc
enc2xs
encoding
end
endif
endsw
engine
enigma
entry
env
envsubst
eof
eqn
err
errno
error
errstr
esac
ethers
euc
eui64
eval
event
evp
ex
exec
execve
exit
expand
export
exports
expr
extattr
extattr_delete_fd
extattr_delete_file
extattr_get_fd
extattr_get_file
extattr_set_fd
extattr_set_file
f77
false
famm
famx
fblocked
fbtab
fc
fchdir
fchflags
fchmod
fchown
fcntl
fconfigure
fcopy
fdescfs
fdformat
fdread
fdwrite
fetch
fg
fgrep
fhopen
fhstat
fhstatfs
fi
file
file2c
fileevent
filename
filetest
find
find2perl
finger
flex
flock
flush
fmt
focus
fold
font
fontedit
for
foreach
fork
format
forward
fpathconf
frame
from
fs
fstab
fstat
fstatfs
fsync
ftp
ftpchroot
ftpusers
ftruncate
futimes
g711conv
gb2312
gb18030
gbk
gcc
gcore
gcov
gdb
gencat
gendsa
genrsa
gensnmptree
getconf
getdents
getdirentries
getdtablesize
getegid
geteuid
getfacl
getfh
getfsstat
getgid
getgroups
getitimer
getlogin
getopt
getopts
getpeername
getpgid
getpgrp
getpid
getppid
getpriority
getresgid
getresuid
getrlimit
getrusage
gets
getsid
getsockname
getsockopt
gettext
gettextize
gettimeofday
gettytab
getuid
glob
global
gmake
goto
gperf
gprof
grab
grep
grid
grn
grodvi
groff
groff_font
groff_out
groff_tmac
grog
grolbp
grolj4
grops
grotty
group
groups
gunzip
gzcat
gzexe
gzip
h2ph
h2xs
hash
hashstat
hd
head
help2man
hesinfo
hexdump
history
host
hostname
hosts
hosts_access
hosts_options
hpftodit
http
hup
i386_get_ioperm
i386_get_ldt
i386_set_ioperm
i386_set_ldt
i386_vm86
iconv
id
ident
idprio
if
ifnames253
ifnames259
image
imapd
incr
indent
indxbib
info
infokey
inode
install
instmodsh
interp
intro
introduction
ioctl
ipcrm
ipcs
ipf
ipftest
ipnat
ippool
ipresend
issetugid
jail
jail_attach
jobid
jobs
join
jot
kbdcontrol
kbdmap
kcon
kdestroy
kdump
kenv
kevent
keycap
keylogin
keylogout
keymap
keysyms
kgdb
kill
killall
killpg
kinit
kldfind
kldfirstmod
kldload
kldnext
kldstat
kldsym
kldunload
klist
kpasswd
kqueue
kse
kse_create
kse_exit
kse_release
kse_switchin
kse_thr_interrupt
kse_wakeup
ktrace
label
labelframe
lam
lappend
last
lastcomm
lastlog
lchflags
lchmod
lchown
ld
ldap
ldapadd
ldapcompare
ldapdelete
ldapmodify
ldapmodrdn
ldappasswd
ldapsearch
ldapwhoami
ldd
leave
less
lesskey
lex
lgetfh
lhash
libnetcfg
library
limit
limits
lindex
link
linprocfs
linsert
lint
lio_listio
list
listbox
listen
lj4_font
lkbib
llength
lmtp
ln
load
loadfont
local
locale
locate
lock
lockf
log
logger
login
logins
logname
logout
look
lookbib
lorder
lower
lp
lpq
lpr
lprm
lptest
lrange
lreplace
ls
lsearch
lseek
lset
lsort
lstat
lsvfs
lutimes
lynx
m4
madvise
magic
mail
maildiracl
maildirkw
maildirmake
mailq
mailx
make
makeinfo
makewhatis
man
manpath
master
mc
mcedit
mcview
md2
md4
md5
mdc2
memory
menu
menubar
menubutton
merge
mesg
message
mincore
minherit
minigzip
mkdep
mkdir
mkfifo
mkimapdcert
mklocale
mknod
mkpop3dcert
mkstr
mktemp
mlock
mlockall
mmap
mmroff
modfind
modfnext
modnext
modstat
moduli
more
motd
mount
mprotect
mptable
msdos
msdosfs
msgattrib
msgcat
msgcmp
msgcomm
msgconv
msgen
msgexec
msgfilter
msgfmt
msggrep
msginit
msgmerge
msgs
msgunfmt
msguniq
mskanji
msql2mysql
msync
mt
munlock
munlockall
munmap
mv
myisamchk
myisamlog
myisampack
mysql
mysqlaccess
mysqladmin
mysqlbinlog
mysqlcheck
mysqld
mysqldump
mysqld_multi
mysqld_safe
mysqlhotcopy
mysqlimport
mysqlshow
mysql_config
mysql_fix_privilege_tables
mysql_zap
namespace
nanosleep
nawk
nc
ncal
ncplist
ncplogin
ncplogout
neqn
netconfig
netgroup
netid
netstat
networks
newaliases
newgrp
nex
nfsstat
nfssvc
ngettext
nice
nl
nm
nmount
nohup
nologin
notify
nroff
nseq
nslookup
ntp_adjtime
ntp_gettime
nvi
nview
objcopy
objdump
objformat
ocsp
od
onintr
open
openssl
opieaccess
opieinfo
opiekey
opiekeys
opiepasswd
option
options
oqmgr
pack
package
packagens
pagesize
palette
pam_auth
panedwindow
parray
passwd
paste
patch
pathchk
pathconf
pawd
pax
pbm
pcre
pcreapi
pcrebuild
pcrecallout
pcrecompat
pcrecpp
pcregrep
pcrematching
pcrepartial
pcrepattern
pcreperform
pcreposix
pcreprecompile
pcresample
pcretest
perl
perl56delta
perl58delta
perl561delta
perl570delta
perl571delta
perl572delta
perl573delta
perl581delta
perl582delta
perl583delta
perl584delta
perl585delta
perl586delta
perl587delta
perl588delta
perl5004delta
perl5005delta
perlaix
perlamiga
perlapi
perlapio
perlapollo
perlartistic
perlbeos
perlbook
perlboot
perlbot
perlbs2000
perlbug
perlcall
perlcc
perlce
perlcheat
perlclib
perlcn
perlcompile
perlcygwin
perldata
perldbmfilter
perldebguts
perldebtut
perldebug
perldelta
perldgux
perldiag
perldoc
perldos
perldsc
perlebcdic
perlembed
perlepoc
perlfaq
perlfaq1
perlfaq2
perlfaq3
perlfaq4
perlfaq5
perlfaq6
perlfaq7
perlfaq8
perlfaq9
perlfilter
perlfork
perlform
perlfreebsd
perlfunc
perlglossary
perlgpl
perlguts
perlhack
perlhist
perlhpux
perlhurd
perlintern
perlintro
perliol
perlipc
perlirix
perlivp
perljp
perlko
perllexwarn
perllinux
perllocale
perllol
perlmachten
perlmacos
perlmacosx
perlmint
perlmod
perlmodinstall
perlmodlib
perlmodstyle
perlmpeix
perlnetware
perlnewmod
perlnumber
perlobj
perlop
perlopenbsd
perlopentut
perlos2
perlos390
perlos400
perlothrtut
perlpacktut
perlplan9
perlpod
perlpodspec
perlport
perlqnx
perlre
perlref
perlreftut
perlrequick
perlreref
perlretut
perlrun
perlsec
perlsolaris
perlstyle
perlsub
perlsyn
perlthrtut
perltie
perltoc
perltodo
perltooc
perltoot
perltrap
perltru64
perltw
perlunicode
perluniintro
perlutil
perluts
perlvar
perlvmesa
perlvms
perlvos
perlwin32
perlxs
perlxstut
perror
pfbtops
pftp
pgrep
phones
photo
pic
pickup
piconv
pid
pipe
pkcs7
pkcs8
pkcs12
pkg_add
pkg_check
pkg_create
pkg_delete
pkg_info
pkg_sign
pkg_version
pkill
pl2pm
place
pod2html
pod2latex
pod2man
pod2text
pod2usage
podchecker
podselect
poll
popd
popup
posix_madvise
postalias
postcat
postconf
postdrop
postfix
postkick
postlock
postlog
postmap
postqueue
postsuper
pr
pread
preadv
printcap
printenv
printf
proc
procfs
profil
protocols
prove
proxymap
ps
psed
psroff
pstruct
ptrace
publickey
pushd
puts
pwd
pwrite
pwritev
qmgr
qmqpd
quota
quotactl
radiobutton
raise
rand
ranlib
rcp
rcs
rcsclean
rcsdiff
rcsfile
rcsfreeze
rcsintro
rcsmerge
read
readelf
readlink
readonly
readv
realpath
reboot
recv
recvfrom
recvmsg
red
ree
refer
regexp
registry
regsub
rehash
remote
rename
repeat
replace
req
reset
resolver
resource
return
rev
revoke
rfcomm_sppd
rfork
rhosts
ripemd
ripemd160
rlog
rlogin
rm
rmd160
rmdir
rpc
rpcgen
rs
rsa
rsautl
rsh
rtld
rtprio
rup
ruptime
rusers
rwall
rwho
s2p
safe
sasl
sasldblistusers2
saslpasswd2
sbrk
scache
scale
scan
sched
sched_getparam
sched_getscheduler
sched_get_priority_max
sched_get_priority_min
sched_rr_get_interval
sched_setparam
sched_setscheduler
sched_yield
scon
scp
script
scrollbar
sdiff
sed
seek
select
selection
semctl
semget
semop
send
sendbug
sendfile
sendmail
sendmsg
sendto
services
sess_id
set
setegid
setenv
seteuid
setfacl
setgid
setgroups
setitimer
setlogin
setpgid
setpgrp
setpriority
setregid
setresgid
setresuid
setreuid
setrlimit
setsid
setsockopt
settc
settimeofday
setty
setuid
setvar
sftp
sh
sha
sha1
sha256
shar
shells
shift
shmat
shmctl
shmdt
shmget
showq
shutdown
sigaction
sigaltstack
sigblock
sigmask
sigpause
sigpending
sigprocmask
sigreturn
sigsetmask
sigstack
sigsuspend
sigvec
sigwait
size
slapadd
slapcat
slapd
slapdn
slapindex
slappasswd
slaptest
sleep
slogin
slurpd
smbutil
smime
smtp
smtpd
socket
socketpair
sockstat
soelim
sort
source
spawn
speed
spinbox
spkac
splain
split
squid
squid_ldap_auth
squid_ldap_group
squid_unix_group
sscop
ssh
sshd_config
ssh_config
stab
startslip
stat
statfs
stop
string
strings
strip
stty
su
subst
sum
suspend
swapoff
swapon
switch
symlink
sync
sysarch
syscall
sysconftool
sysconftoolcheck
systat
s_client
s_server
s_time
tabs
tail
talk
tar
tbl
tclsh
tcltest
tclvars
tcopy
tcpdump
tcpslice
tcsh
tee
tell
telltc
telnet
term
termcap
terminfo
test
texindex
texinfo
text
textdomain
tfmtodit
tftp
then
threads
time
tip
tk
tkerror
tkvars
tkwait
tlsmgr
tmac
top
toplevel
touch
tput
tr
trace
trafshow
trap
troff
true
truncate
truss
tset
tsort
tty
ttys
type
tzfile
ui
ul
ulimit
umask
unalias
uname
uncomplete
uncompress
undelete
unexpand
unhash
unifdef
unifdefall
uniq
units
unknown
unlimit
unlink
unmount
unset
unsetenv
until
unvis
update
uplevel
uptime
upvar
usbhidaction
usbhidctl
users
utf8
utimes
utmp
utrace
uudecode
uuencode
uuidgen
vacation
variable
verify
version
vfork
vgrind
vgrindefs
vi
vidcontrol
vidfont
view
virtual
vis
vt220keys
vwait
w
wait
wait3
wait4
waitpid
wall
wc
wget
what
whatis
where
whereis
which
while
who
whoami
whois
window
winfo
wish
wm
write
writev
wtmp
x509
xargs
xgettext
xmlwf
xstr
xsubpp
yacc
yes
ypcat
ypchfn
ypchpass
ypchsh
ypmatch
yppasswd
ypwhich
yyfix
zcat
zcmp
zdiff
zegrep
zfgrep
zforce
zgrep
zmore
znew
_exit
__syscall
 
FreeBSD/Linux/UNIX General Commands Manual
Hypertext Man Pages
perl571delta
 
PERL571DELTA(1)        Perl Programmers Reference Guide        PERL571DELTA(1)



NAME
       perl571delta - what's new for perl v5.7.1

DESCRIPTION
       This document describes differences between the 5.7.0 release and the
       5.7.1 release.

       (To view the differences between the 5.6.0 release and the 5.7.0
       release, see perl570delta.)

Security Vulnerability Closed
       (This change was already made in 5.7.0 but bears repeating here.)

       A potential security vulnerability in the optional suidperl component
       of Perl was identified in August 2000.  suidperl is neither built nor
       installed by default.  As of April 2001 the only known vulnerable plat-
       form is Linux, most likely all Linux distributions.  CERT and various
       vendors and distributors have been alerted about the vulnerability.
       See http://www.cpan.org/src/5.0/sperl-2000-08-05/sperl-2000-08-05.txt
       for more information.

       The problem was caused by Perl trying to report a suspected security
       exploit attempt using an external program, /bin/mail.  On Linux plat-
       forms the /bin/mail program had an undocumented feature which when com-
       bined with suidperl gave access to a root shell, resulting in a serious
       compromise instead of reporting the exploit attempt.  If you don't have
       /bin/mail, or if you have 'safe setuid scripts', or if suidperl is not
       installed, you are safe.

       The exploit attempt reporting feature has been completely removed from
       all the Perl 5.7 releases (and will be gone also from the maintenance
       release 5.6.1), so that particular vulnerability isn't there anymore.
       However, further security vulnerabilities are, unfortunately, always
       possible.  The suidperl code is being reviewed and if deemed too risky
       to continue to be supported, it may be completely removed from future
       releases.  In any case, suidperl should only be used by security
       experts who know exactly what they are doing and why they are using
       suidperl instead of some other solution such as sudo ( see
       http://www.courtesan.com/sudo/ ).

Incompatible Changes
       o   Although "you shouldn't do that", it was possible to write code
	   that depends on Perl's hashed key order (Data::Dumper does this).
	   The new algorithm "One-at-a-Time" produces a different hashed key
	   order.  More details are in "Performance Enhancements".

       o   The list of filenames from glob() (or <...>) is now by default
	   sorted alphabetically to be csh-compliant.  (bsd_glob() does still
	   sort platform natively, ASCII or EBCDIC, unless GLOB_ALPHASORT is
	   specified.)

Core Enhancements
       AUTOLOAD Is Now Lvaluable

       AUTOLOAD is now lvaluable, meaning that you can add the :lvalue
       attribute to AUTOLOAD subroutines and you can assign to the AUTOLOAD
       return value.

       PerlIO is Now The Default


       o   IO is now by default done via PerlIO rather than system's "stdio".
	   PerlIO allows "layers" to be "pushed" onto a file handle to alter
	   the handle's behaviour.  Layers can be specified at open time via
	   3-arg form of open:

	      open($fh,'>:crlf :utf8', $path) || ...

	   or on already opened handles via extended "binmode":

	      binmode($fh,':encoding(iso-8859-7)');

	   The built-in layers are: unix (low level read/write), stdio (as in
	   previous Perls), perlio (re-implementation of stdio buffering in a
	   portable manner), crlf (does CRLF <=> "\n" translation as on Win32,
	   but available on any platform).  A mmap layer may be available if
	   platform supports it (mostly UNIXes).

	   Layers to be applied by default may be specified via the 'open'
	   pragma.

	   See "Installation and Configuration Improvements" for the effects
	   of PerlIO on your architecture name.

       o   File handles can be marked as accepting Perl's internal encoding of
	   Unicode (UTF-8 or UTF-EBCDIC depending on platform) by a pseudo
	   layer ":utf8" :

	      open($fh,">:utf8","Uni.txt");

	   Note for EBCDIC users: the pseudo layer ":utf8" is erroneously
	   named for you since it's not UTF-8 what you will be getting but
	   instead UTF-EBCDIC.	See perlunicode, utf8, and http://www.uni-
	   code.org/unicode/reports/tr16/ for more information.  In future
	   releases this naming may change.

       o   File handles can translate character encodings from/to Perl's
	   internal Unicode form on read/write via the ":encoding()" layer.

       o   File handles can be opened to "in memory" files held in Perl
	   scalars via:

	      open($fh,'>', \$variable) || ...

       o   Anonymous temporary files are available without need to 'use File-
	   Handle' or other module via

	      open($fh,"+>", undef) || ...

	   That is a literal undef, not an undefined value.

       o   The list form of "open" is now implemented for pipes (at least on
	   UNIX):

	      open($fh,"-|", 'cat', '/etc/motd')

	   creates a pipe, and runs the equivalent of exec('cat', '/etc/motd')
	   in the child process.

       o   The following builtin functions are now overridable: chop(),
	   chomp(), each(), keys(), pop(), push(), shift(), splice(),
	   unshift().

       o   Formats now support zero-padded decimal fields.

       o   Perl now tries internally to use integer values in numeric conver-
	   sions and basic arithmetics (+ - * /) if the arguments are inte-
	   gers, and tries also to keep the results stored internally as inte-
	   gers.  This change leads into often slightly faster and always less
	   lossy arithmetics. (Previously Perl always preferred floating point
	   numbers in its math.)

       o   The printf() and sprintf() now support parameter reordering using
	   the "%\d+\$" and "*\d+\$" syntaxes.	For example

	       print "%2\$s %1\$s\n", "foo", "bar";

	   will print "bar foo\n"; This feature helps in writing internation-
	   alised software.

       o   Unicode in general should be now much more usable.  Unicode can be
	   used in hash keys, Unicode in regular expressions should work now,
	   Unicode in tr/// should work now (though tr/// seems to be a par-
	   ticularly tricky to get right, so you have been warned)

       o   The Unicode Character Database coming with Perl has been upgraded
	   to Unicode 3.1.  For more information, see http://www.unicode.org/
	   , and http://www.unicode.org/unicode/reports/tr27/

	   For developers interested in enhancing Perl's Unicode capabilities:
	   almost all the UCD files are included with the Perl distribution in
	   the lib/unicode subdirectory.  The most notable omission, for space
	   considerations, is the Unihan database.

       o   The Unicode character classes \p{Blank} and \p{SpacePerl} have been
	   added.  "Blank" is like C isblank(), that is, it contains only
	   "horizontal whitespace" (the space character is, the newline
	   isn't), and the "SpacePerl" is the Unicode equivalent of "\s"
	   (\p{Space} isn't, since that includes the vertical tabulator char-
	   acter, whereas "\s" doesn't.)

       Signals Are Now Safe

       Perl used to be fragile in that signals arriving at inopportune moments
       could corrupt Perl's internal state.

Modules and Pragmata
       New Modules


       o   B::Concise, by Stephen McCamant, is a new compiler backend for
	   walking the Perl syntax tree, printing concise info about ops.  The
	   output is highly customisable.

	   See B::Concise for more information.

       o   Class::ISA, by Sean Burke, for reporting the search path for a
	   class's ISA tree, has been added.

	   See Class::ISA for more information.

       o   Cwd has now a split personality: if possible, an extension is used,
	   (this will hopefully be both faster and more secure and robust) but
	   if not possible, the familiar Perl library implementation is used.

       o   Digest, a frontend module for calculating digests (checksums), from
	   Gisle Aas, has been added.

	   See Digest for more information.

       o   Digest::MD5 for calculating MD5 digests (checksums), by Gisle Aas,
	   has been added.

	       use Digest::MD5 'md5_hex';

	       $digest = md5_hex("Thirsty Camel");

	       print $digest, "\n"; # 01d19d9d2045e005c3f1b80e8b164de1

	   NOTE: the MD5 backward compatibility module is deliberately not
	   included since its use is discouraged.

	   See Digest::MD5 for more information.

       o   Encode, by Nick Ing-Simmons, provides a mechanism to translate
	   between different character encodings.  Support for Unicode,
	   ISO-8859-*, ASCII, CP*, KOI8-R, and three variants of EBCDIC are
	   compiled in to the module.  Several other encodings (like Japanese,
	   Chinese, and MacIntosh encodings) are included and will be loaded
	   at runtime.

	   Any encoding supported by Encode module is also available to the
	   ":encoding()" layer if PerlIO is used.

	   See Encode for more information.

       o   Filter::Simple is an easy-to-use frontend to Filter::Util::Call,
	   from Damian Conway.

	       # in MyFilter.pm:

	       package MyFilter;

	       use Filter::Simple sub {
		   while (my ($from, $to) = splice @_, 0, 2) {
			   s/$from/$to/g;
		   }
	       };

	       1;

	       # in user's code:

	       use MyFilter qr/red/ => 'green';

	       print "red\n";	# this code is filtered, will print "green\n"
	       print "bored\n"; # this code is filtered, will print "bogreen\n"

	       no MyFilter;

	       print "red\n";	# this code is not filtered, will print "red\n"

	   See Filter::Simple for more information.

       o   Filter::Util::Call, by Paul Marquess, provides you with the frame-
	   work to write Source Filters in Perl.  For most uses the frontend
	   Filter::Simple is to be preferred.  See Filter::Util::Call for more
	   information.

       o   Locale::Constants, Locale::Country, Locale::Currency, and
	   Locale::Language, from Neil Bowers, have been added.  They provide
	   the codes for various locale standards, such as "fr" for France,
	   "usd" for US Dollar, and "jp" for Japanese.

	       use Locale::Country;

	       $country = code2country('jp');		    # $country gets 'Japan'
	       $code	= country2code('Norway');	    # $code gets 'no'

	   See Locale::Constants, Locale::Country, Locale::Currency, and
	   Locale::Language for more information.

       o   MIME::Base64, by Gisle Aas, allows you to encode data in base64.

	       use MIME::Base64;

	       $encoded = encode_base64('Aladdin:open sesame');
	       $decoded = decode_base64($encoded);

	       print $encoded, "\n"; # "QWxhZGRpbjpvcGVuIHNlc2FtZQ=="

	   See MIME::Base64 for more information.

       o   MIME::QuotedPrint, by Gisle Aas, allows you to encode data in
	   quoted-printable encoding.

	       use MIME::QuotedPrint;

	       $encoded = encode_qp("Smiley in Unicode: \x{263a}");
	       $decoded = decode_qp($encoded);

	       print $encoded, "\n"; # "Smiley in Unicode: =263A"

	   MIME::QuotedPrint has been enhanced to provide the basic methods
	   necessary to use it with PerlIO::Via as in :

	       use MIME::QuotedPrint;
	       open($fh,">Via(MIME::QuotedPrint)",$path)

	   See MIME::QuotedPrint for more information.

       o   PerlIO::Scalar, by Nick Ing-Simmons, provides the implementation of
	   IO to "in memory" Perl scalars as discussed above.  It also serves
	   as an example of a loadable layer.  Other future possibilities
	   include PerlIO::Array and PerlIO::Code.  See PerlIO::Scalar for
	   more information.

       o   PerlIO::Via, by Nick Ing-Simmons, acts as a PerlIO layer and wraps
	   PerlIO layer functionality provided by a class (typically imple-
	   mented in perl code).

	       use MIME::QuotedPrint;
	       open($fh,">Via(MIME::QuotedPrint)",$path)

	   This will automatically convert everything output to $fh to
	   Quoted-Printable.  See PerlIO::Via for more information.

       o   Pod::Text::Overstrike, by Joe Smith, has been added.  It converts
	   POD data to formatted overstrike text.  See Pod::Text::Overstrike
	   for more information.

       o   Switch from Damian Conway has been added.  Just by saying

	       use Switch;

	   you have "switch" and "case" available in Perl.

	       use Switch;

	       switch ($val) {

			   case 1	   { print "number 1" }
			   case "a"	   { print "string a" }
			   case [1..10,42] { print "number in list" }
			   case (@array)   { print "number in list" }
			   case /\w+/	   { print "pattern" }
			   case qr/\w+/    { print "pattern" }
			   case (%hash)    { print "entry in hash" }
			   case (\%hash)   { print "entry in hash" }
			   case (\&sub)    { print "arg to subroutine" }
			   else 	   { print "previous case not true" }
	       }

	   See Switch for more information.

       o   Text::Balanced from Damian Conway has been added, for extracting
	   delimited text sequences from strings.

	       use Text::Balanced 'extract_delimited';

	       ($a, $b) = extract_delimited("'never say never', he never said", "'", '');

	   $a will be "'never say never'", $b will be ', he never said'.

	   In addition to extract_delimited() there are also extract_brack-
	   eted(), extract_quotelike(), extract_codeblock(), extract_vari-
	   able(), extract_tagged(), extract_multiple(), gen_delimited_pat(),
	   and gen_extract_tagged().  With these you can implement rather
	   advanced parsing algorithms.  See Text::Balanced for more informa-
	   tion.

       o   Tie::RefHash::Nestable, by Edward Avis, allows storing hash refer-
	   ences (unlike the standard Tie::RefHash)  The module is contained
	   within Tie::RefHash.

       o   XS::Typemap, by Tim Jenness, is a test extension that exercises XS
	   typemaps.  Nothing gets installed but for extension writers the
	   code is worth studying.

       Updated And Improved Modules and Pragmata


       o   B::Deparse should be now more robust.  It still far from providing
	   a full round trip for any random piece of Perl code, though, and is
	   under active development: expect more robustness in 5.7.2.

       o   Class::Struct can now define the classes in compile time.

       o   Math::BigFloat has undergone much fixing, and in addition the
	   fmod() function now supports modulus operations.

	   ( The fixed Math::BigFloat module is also available in CPAN for
	   those who can't upgrade their Perl:
	   http://www.cpan.org/authors/id/J/JP/JPEACOCK/ )

       o   Devel::Peek now has an interface for the Perl memory statistics
	   (this works only if you are using perl's malloc, and if you have
	   compiled with debugging).

       o   IO::Socket has now atmark() method, which returns true if the
	   socket is positioned at the out-of-band mark.  The method is also
	   exportable as a sockatmark() function.

       o   IO::Socket::INET has support for ReusePort option (if your platform
	   supports it).  The Reuse option now has an alias, ReuseAddr.  For
	   clarity you may want to prefer ReuseAddr.

       o   Net::Ping has been enhanced.  There is now "external" protocol
	   which uses Net::Ping::External module which runs external ping(1)
	   and parses the output.  An alpha version of Net::Ping::External is
	   available in CPAN and in 5.7.2 the Net::Ping::External may be inte-
	   grated to Perl.

       o   The "open" pragma allows layers other than ":raw" and ":crlf" when
	   using PerlIO.

       o   POSIX::sigaction() is now much more flexible and robust.  You can
	   now install coderef handlers, 'DEFAULT', and 'IGNORE' handlers,
	   installing new handlers was not atomic.

       o   The Test module has been significantly enhanced.  Its use is
	   greatly recommended for module writers.

       o   The utf8:: name space (as in the pragma) provides various Perl-
	   callable functions to provide low level access to Perl's internal
	   Unicode representation.  At the moment only length() has been
	   implemented.

       The following modules have been upgraded from the versions at CPAN:
       CPAN, CGI, DB_File, File::Temp, Getopt::Long, Pod::Man, Pod::Text,
       Storable, Text-Tabs+Wrap.

Performance Enhancements
       o   Hashes now use Bob Jenkins "One-at-a-Time" hashing key algorithm (
	   http://burtleburtle.net/bob/hash/doobs.html ).  This algorithm is
	   reasonably fast while producing a much better spread of values than
	   the old hashing algorithm (originally by Chris Torek, later tweaked
	   by Ilya Zakharevich).  Hash values output from the algorithm on a
	   hash of all 3-char printable ASCII keys comes much closer to pass-
	   ing the DIEHARD random number generation tests.  According to perl-
	   bench, this change has not affected the overall speed of Perl.

       o   unshift() should now be noticeably faster.

Utility Changes
       o   h2xs now produces template README.

       o   s2p has been completely rewritten in Perl.  (It is in fact a full
	   implementation of sed in Perl.)

       o   xsubpp now supports OUT keyword.

New Documentation
       perlclib

       Internal replacements for standard C library functions.	(Interesting
       only for extension writers and Perl core hackers.)

       perliol

       Internals of PerlIO with layers.

       README.aix

       Documentation on compiling Perl on AIX has been added.  AIX has several
       different C compilers and getting the right patch level is essential.
       On install README.aix will be installed as perlaix.

       README.bs2000

       Documentation on compiling Perl on the POSIX-BC platform (an EBCDIC
       mainframe environment) has been added.

       This was formerly known as README.posix-bc but the name was considered
       to be too confusing (it has nothing to do with the POSIX module or the
       POSIX standard).  On install README.bs2000 will be installed as
       perlbs2000.

       README.macos

       In perl 5.7.1 (and in the 5.6.1) the MacPerl sources have been synchro-
       nised with the standard Perl sources.  To compile MacPerl some addi-
       tional steps are required, and this file documents those steps.	On
       install README.macos will be installed as perlmacos.

       README.mpeix

       The README.mpeix has been podified, which means that this information
       about compiling and using Perl on the MPE/iX miniframe platform will be
       installed as perlmpeix.

       README.solaris

       README.solaris has been created and Solaris wisdom from elsewhere in
       the Perl documentation has been collected there.  On install
       README.solaris will be installed as perlsolaris.

       README.vos

       The README.vos has been podified, which means that this information
       about compiling and using Perl on the Stratus VOS miniframe platform
       will be installed as perlvos.

       Porting/repository.pod

       Documentation on how to use the Perl source repository has been added.

Installation and Configuration Improvements
       o   Because PerlIO is now the default on most platforms, "-perlio"
	   doesn't get appended to the $Config{archname} (also known as $^O)
	   anymore.  Instead, if you explicitly choose not to use perlio (Con-
	   figure command line option -Uuseperlio), you will get "-stdio"
	   appended.

       o   Another change related to the architecture name is that "-64all"
	   (-Duse64bitall, or "maximally 64-bit") is appended only if your
	   pointers are 64 bits wide.  (To be exact, the use64bitall is
	   ignored.)

       o   APPLLIB_EXP, a less-know configuration-time definition, has been
	   documented.	It can be used to prepend site-specific directories to
	   Perl's default search path (@INC), see INSTALL for information.

       o   Building Berkeley DB3 for compatibility modes for DB, NDBM, and
	   ODBM has been documented in INSTALL.

       o   If you are on IRIX or Tru64 platforms, new profiling/debugging
	   options have been added, see perlhack for more information about
	   pixie and Third Degree.

       New Or Improved Platforms

       For the list of platforms known to support Perl, see "Supported Plat-
       forms" in perlport.

       o   AIX dynamic loading should be now better supported.

       o   After a long pause, AmigaOS has been verified to be happy with
	   Perl.

       o   EBCDIC platforms (z/OS, also known as OS/390, POSIX-BC, and VM/ESA)
	   have been regained.	Many test suite tests still fail and the co-
	   existence of Unicode and EBCDIC isn't quite settled, but the situa-
	   tion is much better than with Perl 5.6.  See perlos390, perlbs2000
	   (for POSIX-BC), and perlvmesa for more information.

       o   Building perl with -Duseithreads or -Duse5005threads now works
	   under HP-UX 10.20 (previously it only worked under 10.30 or later).
	   You will need a thread library package installed. See README.hpux.

       o   Mac OS Classic (MacPerl has of course been available since perl
	   5.004 but now the source code bases of standard Perl and MacPerl
	   have been synchronised)

       o   NCR MP-RAS is now supported.

       o   NonStop-UX is now supported.

       o   Amdahl UTS is now supported.

       o   z/OS (formerly known as OS/390, formerly known as MVS OE) has now
	   support for dynamic loading.  This is not selected by default, how-
	   ever, you must specify -Dusedl in the arguments of Configure.

       Generic Improvements


       o   Configure no longer includes the DBM libraries (dbm, gdbm, db,
	   ndbm) when building the Perl binary.  The only exception to this is
	   SunOS 4.x, which needs them.

       o   Some new Configure symbols, useful for extension writers:

	   d_cmsghdr
		   For struct cmsghdr.

	   d_fcntl_can_lock
		   Whether fcntl() can be used for file locking.

	   d_fsync
	   d_getitimer
	   d_getpagsz
		   For getpagesize(), though you should prefer
		   POSIX::sysconf(_SC_PAGE_SIZE))

	   d_msghdr_s
		   For struct msghdr.

	   need_va_copy
		   Whether one needs to use Perl_va_copy() to copy varargs.

	   d_readv
	   d_recvmsg
	   d_sendmsg
	   sig_size
		   The number of elements in an array needed to hold all the
		   available signals.

	   d_sockatmark
	   d_strtoq
	   d_u32align
		   Whether one needs to access character data aligned by U32
		   sized pointers.

	   d_ualarm
	   d_usleep
       o   Removed Configure symbols: the PDP-11 memory model settings: huge,
	   large, medium, models.

       o   SOCKS support is now much more robust.

       o   If your file system supports symbolic links you can build Perl out-
	   side of the source directory by

		   mkdir perl/build/directory
		   cd perl/build/directory
		   sh /path/to/perl/source/Configure -Dmksymlinks ...

	   This will create in perl/build/directory a tree of symbolic links
	   pointing to files in /path/to/perl/source.  The original files are
	   left unaffected.  After Configure has finished you can just say

		   make all test

	   and Perl will be built and tested, all in perl/build/directory.

Selected Bug Fixes
       Numerous memory leaks and uninitialized memory accesses have been
       hunted down.  Most importantly anonymous subs used to leak quite a bit.

       o   chop(@list) in list context returned the characters chopped in
	   reverse order.  This has been reversed to be in the right order.

       o   The order of DESTROYs has been made more predictable.

       o   mkdir() now ignores trailing slashes in the directory name, as man-
	   dated by POSIX.

       o   Attributes (like :shared) didn't work with our().

       o   The PERL5OPT environment variable (for passing command line argu-
	   ments to Perl) didn't work for more than a single group of options.

       o   The tainting behaviour of sprintf() has been rationalized.  It does
	   not taint the result of floating point formats anymore, making the
	   behaviour consistent with that of string interpolation.

       o   All but the first argument of the IO syswrite() method are now
	   optional.

       o   Tie::ARRAY SPLICE method was broken.

       o   vec() now tries to work with characters <= 255 when possible, but
	   it leaves higher character values in place.	In that case, if vec()
	   was used to modify the string, it is no longer considered to be
	   utf8-encoded.

       Platform Specific Changes and Fixes


       o   Linux previously had problems related to sockaddrlen when using
	   accept(), revcfrom() (in Perl: recv()), getpeername(), and getsock-
	   name().

       o   Previously DYNIX/ptx had problems in its Configure probe for non-
	   blocking I/O.

       o   Windows

	   o	   Borland C++ v5.5 is now a supported compiler that can build
		   Perl.  However, the generated binaries continue to be
		   incompatible with those generated by the other supported
		   compilers (GCC and Visual C++).

	   o	   Win32::GetCwd() correctly returns C:\ instead of C: when at
		   the drive root.  Other bugs in chdir() and Cwd::cwd() have
		   also been fixed.

	   o	   Duping socket handles with open(F, ">&MYSOCK") now works
		   under Windows 9x.

	   o	   HTML files will be installed in c:\perl\html instead of
		   c:\perl\lib\pod\html

	   o	   The makefiles now provide a single switch to bulk-enable
		   all the features enabled in ActiveState ActivePerl (a popu-
		   lar binary distribution).

New or Changed Diagnostics
       Two new debugging options have been added: if you have compiled your
       Perl with debugging, you can use the -DT and -DR options to trace
       tokenising and to add reference counts to displaying variables, respec-
       tively.

       o   If an attempt to use a (non-blessed) reference as an array index is
	   made, a warning is given.

       o   "push @a;" and "unshift @a;" (with no values to push or unshift)
	   now give a warning.	This may be a problem for generated and evaled
	   code.

Changed Internals
       o   Some new APIs: ptr_table_clear(), ptr_table_free(), sv_setref_uv().
	   For the full list of the available APIs see perlapi.

       o   dTHR and djSP have been obsoleted; the former removed (because it's
	   a no-op) and the latter replaced with dSP.

       o   Perl now uses system malloc instead of Perl malloc on all 64-bit
	   platforms, and even in some not-always-64-bit platforms like AIX,
	   IRIX, and Solaris.  This change breaks backward compatibility but
	   Perl's malloc has problems with large address spaces and also the
	   speed of vendors' malloc is generally better in large address space
	   machines (Perl's malloc is mostly tuned for space).

New Tests
       Many new tests have been added.	The most notable is probably the
       lib/1_compile: it is very notable because running it takes quite a long
       time -- it test compiles all the Perl modules in the distribution.
       Please be patient.

Known Problems
       Note that unlike other sections in this document (which describe
       changes since 5.7.0) this section is cumulative containing known prob-
       lems for all the 5.7 releases.

       AIX vac 5.0.0.0 May Produce Buggy Code For Perl

       The AIX C compiler vac version 5.0.0.0 may produce buggy code, result-
       ing in few random tests failing, but when the failing tests are run by
       hand, they succeed.  We suggest upgrading to at least vac version
       5.0.1.0, that has been known to compile Perl correctly.	"lslpp -L|grep
       vac.C" will tell you the vac version.

       lib/ftmp-security tests warn 'system possibly insecure'

       Don't panic.  Read INSTALL 'make test' section instead.

       lib/io_multihomed Fails In LP64-Configured HP-UX

       The lib/io_multihomed test may hang in HP-UX if Perl has been config-
       ured to be 64-bit. Because other 64-bit platforms do not hang in this
       test, HP-UX is suspect. All other tests pass in 64-bit HP-UX. The test
       attempts to create and connect to "multihomed" sockets (sockets which
       have multiple IP addresses).

       Test lib/posix Subtest 9 Fails In LP64-Configured HP-UX

       If perl is configured with -Duse64bitall, the successful result of the
       subtest 10 of lib/posix may arrive before the successful result of the
       subtest 9, which confuses the test harness so much that it thinks the
       subtest 9 failed.

       lib/b test 19

       The test fails on various platforms (PA64 and IA64 are known), but the
       exact cause is still being investigated.

       Linux With Sfio Fails op/misc Test 48

       No known fix.

       sigaction test 13 in VMS

       The test is known to fail; whether it's because of VMS of because of
       faulty test is not known.

       sprintf tests 129 and 130

       The op/sprintf tests 129 and 130 are known to fail on some platforms.
       Examples include any platform using sfio, and Compaq/Tandem's Non-
       Stop-UX.  The failing platforms do not comply with the ANSI C Standard,
       line 19ff on page 134 of ANSI X3.159 1989 to be exact.  (They produce
       something else than "1" and "-1" when formatting 0.6 and -0.6 using the
       printf format "%.0f", most often they produce "0" and "-0".)

       Failure of Thread tests

       The subtests 19 and 20 of lib/thr5005.t test are known to fail due to
       fundamental problems in the 5.005 threading implementation. These are
       not new failures--Perl 5.005_0x has the same bugs, but didn't have
       these tests. (Note that support for 5.005-style threading remains
       experimental.)

       Localising a Tied Variable Leaks Memory

	   use Tie::Hash;
	   tie my %tie_hash => 'Tie::StdHash';

	   ...

	   local($tie_hash{Foo}) = 1; # leaks

       Code like the above is known to leak memory every time the local() is
       executed.

       Self-tying of Arrays and Hashes Is Forbidden

       Self-tying of arrays and hashes is broken in rather deep and hard-to-
       fix ways.  As a stop-gap measure to avoid people from getting frus-
       trated at the mysterious results (core dumps, most often) it is for now
       forbidden (you will get a fatal error even from an attempt).

       Building Extensions Can Fail Because Of Largefiles

       Some extensions like mod_perl are known to have issues with `large-
       files', a change brought by Perl 5.6.0 in which file offsets default to
       64 bits wide, where supported.  Modules may fail to compile at all or
       compile and work incorrectly.  Currently there is no good solution for
       the problem, but Configure now provides appropriate non-largefile
       ccflags, ldflags, libswanted, and libs in the %Config hash (e.g., $Con-
       fig{ccflags_nolargefiles}) so the extensions that are having problems
       can try configuring themselves without the largefileness.  This is
       admittedly not a clean solution, and the solution may not even work at
       all.  One potential failure is whether one can (or, if one can, whether
       it's a good idea) link together at all binaries with different ideas
       about file offsets, all this is platform-dependent.

       The Compiler Suite Is Still Experimental

       The compiler suite is slowly getting better but is nowhere near working
       order yet.

Reporting Bugs
       If you find what you think is a bug, you might check the articles
       recently posted to the comp.lang.perl.misc newsgroup and the perl bug
       database at http://bugs.perl.org/  There may also be information at
       http://www.perl.com/perl/ , the Perl Home Page.

       If you believe you have an unreported bug, please run the perlbug pro-
       gram included with your release.  Be sure to trim your bug down to a
       tiny but sufficient test case.  Your bug report, along with the output
       of "perl -V", will be sent off to perlbug@perl.org to be analysed by
       the Perl porting team.

SEE ALSO
       The Changes file for exhaustive details on what changed.

       The INSTALL file for how to build Perl.

       The README file for general stuff.

       The Artistic and Copying files for copyright information.

HISTORY
       Written by Jarkko Hietaniemi <jhi@iki.fi>, with many contributions from
       The Perl Porters and Perl Users submitting feedback and patches.

       Send omissions or corrections to <perlbug@perl.org>.



perl v5.8.8			  2006-01-07		       PERL571DELTA(1)
=19267
+585
(85)