#!/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);