Parent->ChildX ->ChildY->GrandchildYX ->GrandchildYY #### Parent.function1 (function1 defined in Parent) ChildX.function1 (function1 imported from Parent) ChildX.function2 (function2 defined in ChildX) ChildY.function1 (function1 defined in ChildY) ChildY.function2 (function2 defined in ChildY) GrandchildYX.function1 (function1 imported from ChildY) GrandchildYX.function2 (function2 defined in GrandchildYX) #### use Parent qw(function1) # function 1 from Parent or use ChildX qw(function1 function2) # function1 from Parent, function2 from ChildX or use ChildY qw(function1) # function1 from ChildY or use GrandchildYX qw(function1 function2) # function1 from ChildY, function2 from GrandchildYX