in reply to subroutine calls itself
Your subroutines are said to be reentrant and (more specifically) recursive.
How does Perl handle this?
With ease.
I'm just wondering about the performance issues.
None. The first time a subroutine is called at a level of recursion it's never been before, there will be a tiny overhead as a new set of lexicals are created. These will be reused in future calls.
my $c; my %s; sub foo { my ($x) = @_;; $c++; $s{\$x}++; foo($x-1) if $x; } for (1..1000) { foo(int(rand(6))+1); } print("foo() was called $c times, but only ", scalar(keys(%s)), " sets + of lexicals were created.\n");
foo() was called 4531 times, but only 7 sets of lexicals were created.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: subroutine calls itself
by Fletch (Bishop) on Jan 09, 2009 at 15:09 UTC | |
|
Re^2: subroutine calls itself
by tux402 (Acolyte) on Jan 09, 2009 at 16:17 UTC | |
by ikegami (Patriarch) on Jan 09, 2009 at 17:50 UTC |