BEGIN { package X; sub A {} sub B {} } BEGIN { package Y; @ISA=qw(X); sub B {} } BEGIN { package Z; @ISA=qw(Y); sub A {} } my $object = ($opt{specialcase} ? 'Z' : 'Y')->new(@newargs);