From: Tom Christiansen <tchrist@mox.perl.com> Subject: SRC: Nesting Subroutines Date: 22 May 1998 13:42:17 GMT If you're used to using nested subroutines in other programming languages with their own private variables, you'll have to work at it a bit in Perl. The intuitive coding of this kind of thing incurs mysterious warnings about ``will not stay shared''. For example, this won't work: sub outer { my $x = $_[0] + 35; sub inner { return $x * 19 } # WRONG return $x + inner(); } A simple work-around is the following: sub outer { my $x = $_[0] + 35; local *inner = sub { return $x * 19 }; return $x + inner(); } --tom -- /* This bit of chicanery makes a unary function followed by a parenthesis into a function with one argument, highest precedence. */ --Larry Wall in toke.c from the perl source code