diff options
author | Perl 5 Porters <perl5-porters@africa.nicoh.com> | 1997-04-23 00:00:00 +1200 |
---|---|---|
committer | Chip Salzenberg <chip@atlantic.net> | 1997-04-23 00:00:00 +1200 |
commit | 46fc3d4c69a0adf236bfcba70daee7fd597cf30d (patch) | |
tree | 3b70f4a42d2ccd034756c9786032a1e531569e62 /pod/perlfaq7.pod | |
parent | 10a676f83f541430b63a3192b246bf6f86d3b189 (diff) | |
download | perl-46fc3d4c69a0adf236bfcba70daee7fd597cf30d.tar.gz |
[inseparable changes from match from perl-5.003_97g to perl-5.003_97h]
BUILD PROCESS
Subject: Fix up Linux hints for tcsh, and Configure patch
Date: Tue, 22 Apr 1997 11:02:27 -0400 (EDT)
From: Andy Dougherty <doughera@lafcol.lafayette.edu>
Files: Configure hints/linux.sh
Msg-ID: Pine.SOL.3.95q.970422101051.2506C-100000@fractal.lafayette.e
(applied based on p5p patch as commit 1eb1b1cb9647b817d039bb17afa3e74940b5ef92)
Subject: There is no standard answer to 'Use suidperl?'
From: Chip Salzenberg <chip@perl.com>
Files: hints/bsdos.sh hints/freebsd.sh hints/linux.sh hints/machten_2.sh
CORE LANGUAGE CHANGES
Subject: Support PRINTF for tied handles
Date: Sun, 20 Apr 1997 18:26:13 -0400
From: Doug MacEachern <dougm@opengroup.org>
Files: pod/perldelta.pod pod/perltie.pod pp_sys.c t/op/misc.t
Msg-ID: 199704202226.SAA08032@postman.osf.org
(applied based on p5p patch as commit e7c5525577c16ee25e3521e86aca2b5105dba394)
CORE PORTABILITY
Subject: Fix bitwise shifts and pack('w') on Crays
From: Chip Salzenberg <chip@perl.com>
Files: pp.c
DOCUMENTATION
Subject: FAQ udpate (23-apr-97)
Date: Wed, 23 Apr 1997 12:22:55 -0600 (MDT)
From: Nathan Torkington <gnat@prometheus.frii.com>
Files: pod/perlfaq*.pod
private-msgid: 199704231822.MAA05074@prometheus.frii.com
OTHER CORE CHANGES
Subject: Mondo Cool patch for buffer safety and convenience
From: Chip Salzenberg <chip@perl.com>
Files: XSUB.h doop.c dump.c ext/DynaLoader/dl_dlopen.xs ext/DynaLoader/dl_hpux.xs ext/DynaLoader/dl_next.xs ext/DynaLoader/dlutils.c ext/ODBM_File/ODBM_File.xs global.sym gv.c interp.sym mg.c op.c perl.c perl.h pod/perlguts.pod pp.c pp_ctl.c pp_hot.c pp_sys.c proto.h regcomp.c regexec.c sv.c toke.c util.c
Subject: Problems with glob
Date: Sun, 20 Apr 1997 02:44:32 -0400 (EDT)
From: Ilya Zakharevich <ilya@math.ohio-state.edu>
Files: op.c
Msg-ID: 1997Apr20.024432.1941365@hmivax.humgen.upenn.edu
(applied based on p5p patch as commit a1230b335277820e65b8a9454ab751341204cf4f)
Subject: Fix scalar leak in closures
From: Chip Salzenberg <chip@perl.com>
Files: op.c scope.c
Subject: Refine error messages re: anon subs' prototypes
From: Chip Salzenberg <chip@perl.com>
Files: op.c
Subject: Outermost scope is void, not scalar
From: Chip Salzenberg <chip@perl.com>
Files: pp_ctl.c
Diffstat (limited to 'pod/perlfaq7.pod')
-rw-r--r-- | pod/perlfaq7.pod | 50 |
1 files changed, 45 insertions, 5 deletions
diff --git a/pod/perlfaq7.pod b/pod/perlfaq7.pod index a1d60f84d5..908fc14e7c 100644 --- a/pod/perlfaq7.pod +++ b/pod/perlfaq7.pod @@ -298,6 +298,26 @@ E<lt>STDINE<gt>'>, there would have been no way for the hypothetical timeout() function to access the lexical variable $line back in its caller's scope. +=head2 What is variable suicide and how can I prevent it? + +Variable suicide is when you (temporarily or permanently) lose the +value of a variable. It is caused by scoping through my() and local() +interacting with either closures or aliased foreach() interator +variables and subroutine arguments. It used to be easy to +inadvertently lose a variable's value this way, but now it's much +harder. Take this code: + + my $f = "foo"; + sub T { + while ($i++ < 3) { my $f = $f; $f .= "bar"; print $f, "\n" } + } + T; + print "Finally $f\n"; + +The $f that has "bar" added to it three times should be a new C<$f> +(C<my $f> should create a new local variable each time through the +loop). It isn't, however. This is a bug, and will be fixed. + =head2 How can I pass/return a {Function, FileHandle, Array, Hash, Method, Regexp}? With the exception of regexps, you need to pass references to these @@ -339,9 +359,9 @@ IO::File modules, both part of the standard Perl distribution. To pass regexps around, you'll need to either use one of the highly experimental regular expression modules from CPAN (Nick Ing-Simmons's -Regexp or Ilya Zakharevich's Devel::Regexp), pass around strings and -use an exception-trapping eval, or else be very, very clever. Here's -an example of how to pass in a string to be regexp compared: +Regexp or Ilya Zakharevich's Devel::Regexp), pass around strings +and use an exception-trapping eval, or else be be very, very clever. +Here's an example of how to pass in a string to be regexp compared: sub compare($$) { my ($val1, $regexp) = @_; @@ -539,7 +559,7 @@ Why do you want to do that? :-) If you want to override a predefined function, such as open(), then you'll have to import the new definition from a different module. See L<perlsub/"Overriding Builtin Functions">. There's -also an example in L<perltoot/"Class::Struct">. +also an example in L<perltoot/"Class::Template">. If you want to overload a Perl operator, such as C<+> or C<**>, then you'll want to use the C<use overload> pragma, documented @@ -576,7 +596,7 @@ how best to do this, so he left it out, even though it's been on the wish list since perl1. Here's a simple example of a switch based on pattern matching. We'll -do a multiway conditional based on the type of reference stored in +do a multi-way conditional based on the type of reference stored in $whatchamacallit: SWITCH: @@ -669,6 +689,26 @@ not necessarily the same as the one in which you were compiled): warn "called me from a $class object"; } +=head2 How can I comment out a large block of perl code? + +Use embedded POD to discard it: + + # program is here + + =for nobody + This paragraph is commented out + + # program continues + + =begin comment text + + all of this stuff + + here will be ignored + by everyone + + =end comment text + =head1 AUTHOR AND COPYRIGHT Copyright (c) 1997 Tom Christiansen and Nathan Torkington. |