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