diff options
author | Perl 5 Porters <perl5-porters@africa.nicoh.com> | 1997-01-25 15:58:00 +1200 |
---|---|---|
committer | Chip Salzenberg <chip@atlantic.net> | 1997-01-25 15:58:00 +1200 |
commit | 774d564bb7dd1ed64ca0d7e534aa67e93f991f02 (patch) | |
tree | 2e8fac95be59aed598a9217a2911632612d07854 /pod/perlfunc.pod | |
parent | 9e3a2af888982d0a201149cbcdbf3feb6771acb4 (diff) | |
parent | bbad36071d5a6d4be3588f0f10c88247439076d8 (diff) | |
download | perl-774d564bb7dd1ed64ca0d7e534aa67e93f991f02.tar.gz |
[inseparable changes from patch from perl5.003_22 to perl5.003_23]perl-5.003_23
BUILD PROCESS
Subject: Make configure.gnu a copy of configure; make configure writea
From: Chip Salzenberg <chip@atlantic.net>
Files: MANIFEST configure.gnu
Subject: Regen Configure with metaconfig: +ARCHNAME, -FILE_filbuf
From: Chip Salzenberg <chip@perl.com>
Files: Configure config_H config_h.SH hints/lynxos.sh os2/diff.configure os2/os2ish.h plan9/config.plan9 sv.c utils/perlbug.PL vms/config.vms vms/fndvers.com
Subject: Compile with optimization when testing memory functions
From: Chip Salzenberg <chip@atlantic.net>
Files: Configure
CORE LANGUAGE CHANGES
Subject: Disallow changing $_[0] in __DIE__ handlers
From: Chip Salzenberg <chip@atlantic.net>
Files: pod/perlfunc.pod util.c
Subject: Fix overloading with inheritance and AUTOLOAD
Date: Mon, 20 Jan 1997 17:26:32 -0500 (EST)
From: Ilya Zakharevich <ilya@math.ohio-state.edu>
Files: gv.c lib/diagnostics.pm lib/overload.pm pod/perldebug.pod pod/perldiag.pod pod/perlfunc.pod pod/perlop.pod pod/perlre.pod pod/perltoc.pod pod/perlxs.pod
Msg-ID: <199701202226.RAA05072@monk.mps.ohio-state.edu>
(applied based on p5p patch as commit e7ea3e70155d0bea30720ba41eb6bb6742aac0d1)
Subject: Nested here-docs
Date: Mon, 20 Jan 1997 15:13:42 -0800
From: Larry Wall <larry@wall.org>
Files: toke.c
Msg-ID: <199701202313.PAA11693@wall.org>
(applied based on p5p patch as commit fd2d0953290ddd46f0820dbd6c87245486b7ab28)
Subject: Revert $^X to old behavior (plus HP-UX bug fix)
From: Chip Salzenberg <chip@atlantic.net>
Files: hints/hpux.sh toke.c
Subject: Protect against '0' in 'stmt while <HANDLE>'
From: Chip Salzenberg <chip@atlantic.net>
Files: op.c
Subject: Don't warn when closure uses var at file scope
From: Chip Salzenberg <chip@atlantic.net>
Files: op.c
CORE PORTABILITY
Subject: VMS patches for _22
Date: Mon, 20 Jan 1997 22:50:21 -0500 (EST)
From: Charles Bailey <bailey@HMIVAX.HUMGEN.UPENN.EDU>
Files: ext/POSIX/POSIX.xs lib/ExtUtils/MM_VMS.pm lib/ExtUtils/xsubpp lib/Test/Harness.pm toke.c vms/Makefile vms/descrip.mms vms/genconfig.pl vms/perly_c.vms vms/vmsish.h x2p/a2p.h vms/Makefile vms/config.vms vms/descrip.mms vms/perly_c.vms
private-msgid: <01IEGBJ2TMYS003PCL@hmivax.humgen.upenn.edu>
Subject: Plan9 update
From: Luther Huffman <lutherh@stratcom.com>
Files: plan9/config.plan9 plan9/mkfile
Subject: hints & Configure changes to build perl on DC/OSx
Date: Thu, 16 Jan 1997 16:43:52 -0800
From: Stephen Zander <stephen.zander@interlock.mckesson.com>
Files: Configure MANIFEST hints/dcosx.sh
Msg-ID: <199701170043.QAA25985@wsbip1.mckesson.com>
(applied based on p5p patch as commit 23f8769697279d7912be5943de9fdf93f6aa3013)
DOCUMENTATION
Subject: Additional docs for __DIE__ and __WARN__
From: Gurusamy Sarathy <gsar@engin.umich.edu>
Files: pod/perlfunc.pod pod/perlrun.pod pod/perlvar.pod
Subject: Document #line directive
Date: Fri, 24 Jan 1997 04:08:44 -0500
From: Gurusamy Sarathy <gsar@engin.umich.edu>
Files: pod/perlsyn.pod pod/perltoc.pod
private-msgid: <199701240908.EAA23846@aatma.engin.umich.edu>
Subject: delta for perldelta
Date: Fri, 24 Jan 1997 07:57:43 -0800
From: Tom Christiansen <tchrist@mox.perl.com>
Files: pod/perlnews.pod pod/perltoc.pod
private-msgid: <804.854121463@jinete>
Subject: Updates to perldelta
Date: Mon, 20 Jan 1997 06:48:49 -0500 (EST)
From: Ilya Zakharevich <ilya@math.ohio-state.edu>
Files: pod/perlnews.pod pod/perltoc.pod
private-msgid: <199701211610.LAA06227@monk.mps.ohio-state.edu>
Subject: perlnews.pod diff for the Fcntl
Date: Tue, 21 Jan 1997 18:00:56 +0200 (EET)
From: Jarkko Hietaniemi <jhi@cc.hut.fi>
Files: pod/perlnews.pod
private-msgid: <199701211600.SAA30117@alpha.hut.fi>
Subject: Rename perlnews -> perldelta per Tom's request
From: Chip Salzenberg <chip@atlantic.net>
Files: MANIFEST pod/Makefile pod/buildtoc pod/perl.pod pod/perldelta.pod pod/perltoc.pod pod/roffitall
LIBRARY AND EXTENSIONS
Subject: Refresh IO to 1.15 (plus DESTROY and new_tmpfile fixes)
From: Chip Salzenberg <chip@atlantic.net>
Files: ext/IO/lib/IO/File.pm ext/IO/lib/IO/Handle.pm ext/IO/lib/IO/Pipe.pm ext/IO/lib/IO/Seekable.pm ext/IO/lib/IO/Socket.pm t/lib/io_pipe.t
Subject: Allow IO.xs to remain at 1.15 while $VERSION is 1.1501
From: Chip Salzenberg <chip@atlantic.net>
Files: XSUB.h ext/IO/Makefile.PL ext/IO/lib/IO/Handle.pm
Subject: Add E* and SA_* constants
Date: Wed, 22 Jan 1997 21:36:07 -0500
From: Roderick Schertler <roderick@gate.net>
Files: ext/POSIX/POSIX.pm ext/POSIX/POSIX.pod ext/POSIX/POSIX.xs
private-msgid: <23338.853986967@eeyore.ibcinc.com>
OTHER CORE CHANGES
Subject: Make PERL5LIB and -I work like C<use lib>
Date: Thu, 23 Jan 1997 15:23:27 +0000
From: Tim Bunce <Tim.Bunce@ig.co.uk>
Files: lib/lib.pm perl.c
private-msgid: <9701231523.AA26613@toad.ig.co.uk>
Subject: Fix /\G.a/
From: Chip Salzenberg <chip@atlantic.net>
Files: regcomp.c regcomp.h regexec.c regexp.h toke.c
Subject: Extend stack in pp_undef (!)
From: Chip Salzenberg <chip@atlantic.net>
Files: pp.c
Subject: Allow for sub to be redefined while executing
From: Chip Salzenberg <chip@atlantic.net>
Files: cop.h pp_hot.c t/op/misc.t
Subject: Eliminate redundant flag CVf_FORMAT
From: Chip Salzenberg <chip@atlantic.net>
Files: cv.h op.c perl.c perly.c perly.y proto.h sv.c toke.c
Subject: Generate IVs when possible in abs() and int()
From: Chip Salzenberg <chip@atlantic.net>
Files: pp.c
Subject: Efficiency patchlet for pp_aassign()
Date: Mon, 20 Jan 1997 22:05:39 -0500 (EST)
From: Ilya Zakharevich <ilya@math.ohio-state.edu>
Files: pp_hot.c
Msg-ID: <199701210305.WAA05451@monk.mps.ohio-state.edu>
(applied based on p5p patch as commit 7e42bd57a6867e174bc3bc555c3268b485940a98)
Subject: Remove "suidperl security patch" message
From: Chip Salzenberg <chip@atlantic.net>
Files: perl.c
TESTS
Subject: Fix tests of $^X and $0 to work with QNX
From: Chip Salzenberg <chip@atlantic.net>
Files: t/lib/io_pipe.t t/lib/open2.t t/lib/open3.t t/op/magic.t
Subject: Patch tests for systems without fork()
Date: Thu, 23 Jan 1997 23:51:28 +0100
From: "Norbert Pueschel" <pueschel@imsdd.meb.uni-bonn.de>
Files: t/io/pipe.t t/lib/filehand.t t/lib/io_pipe.t t/lib/io_sock.t t/lib/open2.t t/lib/open3.t t/op/fork.t
private-msgid: <77724697@Armageddon.meb.uni-bonn.de>
Subject: Test patches for OS/2
Date: Thu, 16 Jan 1997 23:48:18 -0500 (EST)
From: Ilya Zakharevich <ilya@math.ohio-state.edu>
Files: os2/OS2/ExtAttr/t/os2_ea.t os2/OS2/PrfDB/t/os2_prfdb.t os2/OS2/REXX/t/rx_cmprt.t os2/OS2/REXX/t/rx_dllld.t os2/OS2/REXX/t/rx_objcall.t os2/OS2/REXX/t/rx_sql.test os2/OS2/REXX/t/rx_tiesql.test os2/OS2/REXX/t/rx_tievar.t os2/OS2/REXX/t/rx_tieydb.t os2/OS2/REXX/t/rx_varset.t os2/OS2/REXX/t/rx_vrexx.t t/README t/cmd/while.t t/comp/colon.t t/comp/multiline.t t/io/argv.t t/lib/anydbm.t t/lib/gdbm.t t/lib/ndbm.t t/lib/odbm.t t/lib/sdbm.t t/op/cmp.t t/op/magic.t
Msg-ID: <199701170448.XAA28948@monk.mps.ohio-state.edu>
(applied based on p5p patch as commit bbad36071d5a6d4be3588f0f10c88247439076d8)
UTILITIES
Subject: Translate \200 to È in pod2html
From: Chip Salzenberg <chip@atlantic.net>
Files: pod/pod2html.PL
Subject: VMS patches: '.com' extension on scripts
Date: Fri, 24 Jan 1997 18:42:29 -0500 (EST)
From: Charles Bailey <bailey@HMIVAX.HUMGEN.UPENN.EDU>
Files: pod/checkpods.PL pod/pod2html.PL pod/pod2latex.PL pod/pod2man.PL pod/pod2text.PL utils/c2ph.PL utils/h2ph.PL utils/h2xs.PL utils/perlbug.PL utils/perldoc.PL utils/pl2pm.PL utils/splain.PL vms/Makefile vms/descrip.mms x2p/find2perl.PL x2p/s2p.PL
private-msgid: <01IELNPDLYJM003E7J@hmivax.humgen.upenn.edu>
Diffstat (limited to 'pod/perlfunc.pod')
-rw-r--r-- | pod/perlfunc.pod | 80 |
1 files changed, 73 insertions, 7 deletions
diff --git a/pod/perlfunc.pod b/pod/perlfunc.pod index 488c797c65..99231b9ffd 100644 --- a/pod/perlfunc.pod +++ b/pod/perlfunc.pod @@ -408,8 +408,17 @@ With EXPR, it returns some extra information that the debugger uses to print a stack trace. The value of EXPR indicates how many call frames to go back before the current one. - ($package, $filename, $line, - $subroutine, $hasargs, $wantarray) = caller($i); + ($package, $filename, $line, $subroutine, + $hasargs, $wantarray, $evaltext, $is_require) = caller($i); + +Here $subroutine may be C<"(eval)"> if the frame is not a subroutine +call, but C<L<eval>>. In such a case additional elements $evaltext and +$is_require are set: $is_require is true if the frame is created by +C<L<require>> or C<L<use>> statement, $evaltext contains the text of +C<L<eval EXPR>> statement. In particular, for C<L<eval BLOCK>> +statement $filename is C<"(eval)">, but $evaltext is undefined. (Note +also that C<L<use>> statement creates a C<L<require>> frame inside +an C<L<eval EXPR>>) frame. Furthermore, when called from within the DB package, caller returns more detailed information: it sets the list variable @DB::args to be the @@ -774,6 +783,12 @@ produce, respectively See also exit() and warn(). +You can arrange for a callback to be called just before the die() does +its deed, by setting the C<$SIG{__DIE__}> hook. The associated handler +will be called with the error text and can change the error message, if +it sees fit, by calling die() again. See L<perlvar> for details on +setting C<%SIG> entries, and eval() for some examples. + =item do BLOCK Not really a function. Returns the value of the last command in the @@ -919,8 +934,11 @@ context of the eval. If there is a syntax error or runtime error, or a die() statement is executed, an undefined value is returned by eval(), and C<$@> is set to the error message. If there was no error, C<$@> is guaranteed to be a null -string. If EXPR is omitted, evaluates $_. The final semicolon, if -any, may be omitted from the expression. +string. If EXPR is omitted, evaluates C<$_>. The final semicolon, if +any, may be omitted from the expression. Beware that using eval() +neither silences perl from printing warnings to STDERR, nor does it +stuff the text of warning messages into C<$@>. To do either of those, +you have to use the C<$SIG{__WARN__}> facility. See warn() and L<perlvar>. Note that, because eval() traps otherwise-fatal errors, it is useful for determining whether a particular feature (such as socket() or symlink()) @@ -944,6 +962,24 @@ Examples: # a run-time error eval '$answer ='; # sets $@ +When using the eval{} form as an exception trap in libraries, you may +wish not to trigger any C<__DIE__> hooks that user code may have +installed. You can use the C<local $SIG{__DIE__}> construct for this +purpose, as shown in this example: + + # a very private exception trap for divide-by-zero + eval { local $SIG{'__DIE__'}; $answer = $a / $b; }; warn $@ if $@; + +This is especially significant, given that C<__DIE__> hooks can call +die() again, which has the effect of changing their error messages: + + # __DIE__ hooks may modify error messages + { + local $SIG{'__DIE__'} = sub { (my $x = $_[0]) =~ s/foo/bar/g; die $x }; + eval { die "foo foofs here" }; + print $@ if $@; # prints "bar barfs here" + } + With an eval(), you should be especially careful to remember what's being looked at when: @@ -3045,7 +3081,7 @@ meaning of the fields: size total size of file, in bytes atime last access time since the epoch mtime last modify time since the epoch - ctime inode change time (NOT creation type!) since the epoch + ctime inode change time (NOT creation time!) since the epoch blksize preferred block size for file system I/O blocks actual number of blocks allocated @@ -3640,8 +3676,38 @@ for a scalar. =item warn LIST -Produces a message on STDERR just like die(), but doesn't exit or -on an exception. +Produces a message on STDERR just like die(), but doesn't exit or throw +an exception. + +No message is printed if there is a C<$SIG{__WARN__}> handler +installed. It is the handler's responsibility to deal with the message +as it sees fit (like, for instance, converting it into a die()). Most +handlers must therefore make arrangements to actually display the +warnings that they are not prepared to deal with, by calling warn() +again in the handler. Note that this is quite safe and will not +produce an endless loop, since C<__WARN__> hooks are not called from +inside one. + +You will find this behavior is slightly different from that of +C<$SIG{__DIE__}> handlers (which don't suppress the error text, but can +instead call die() again to change it). + +Using a C<__WARN__> handler provides a powerful way to silence all +warnings (even the so-called mandatory ones). An example: + + # wipe out *all* compile-time warnings + BEGIN { $SIG{'__WARN__'} = sub { warn $_[0] if $DOWARN } } + my $foo = 10; + my $foo = 20; # no warning about duplicate my $foo, + # but hey, you asked for it! + # no compile-time or run-time warnings before here + $DOWARN = 1; + + # run-time warnings enabled after here + warn "\$foo is alive and $foo!"; # does show up + +See L<perlvar> for details on setting C<%SIG> entries, and for more +examples. =item write FILEHANDLE |