#! /usr/bin/perl use strict; use warnings; use Test::MockModule; my $father = Test::MockModule->new('Father'); $father->mock(alert => sub { print 'replaced by try' . $/; }); do 'Son.pm'; #### package Father; sub alert { print 'father' . $/; } 1 #### package Son; use base Father; sub new { bless {}, Son; *{'Father::alert'} = sub { print 'son' . $/; }; } Son->new->alert();