sub recurse {
my $level = shift;
print "recurse [$level]\n";
recurse($level - 1) if $level > 0;
}
####
#!/usr/bin/perl -w
use strict;
local $\ = "\n";
sub oldsub {
my $level = shift;
print "oldsub [$level]";
oldsub($level - 1) if $level > 0;
}
sub newsub {
print "newsub [$_[0]]";
}
my $oldsub_ref = \&oldsub;
$oldsub_ref->(2);
print '-' x 10;
*oldsub = \&newsub;
$oldsub_ref->(2);
####
oldsub [2]
oldsub [1]
oldsub [0]
----------
Subroutine main::oldsub redefined at ./typeglob_clobber.pl line 22.
oldsub [2]
newsub [1]
####
my $coderef = do {
my $selfref;
$selfref = sub {
# use $selfref here for recursion
};
};
####
{
my $selfref;
sub named {
# use $selfref here
}
$selfref = \&named;
}