Jaypal, my experienced opinion on this matter is that you probably should refactor everything “one more level-of-detail down” in your overall testing hierarchy. Instead of putting “use my package script” at the outermost level, allow each of the individual test scripts to do it. (Or, if multiple scripts have common prerequisites, let each of them use a common library which, in turn, specifies the individual uses.)
When any particular (outer-level) test script finally runs, then from the Perl interpreter’s point-of-view it will “top down, incorporate everything.” However, generally speaking, you would prefer to be able to also run any individual script, well, “individually.” Therefore, it’s generally a good idea to put all of the prerequisites for each individual test-case at the bottom of the tree, so that each case, if run individually, is guaranteed to produce the same results that it would when it is run within the larger framework.
Therefore, build each script, necessarily “from the bottom up,” in such a way that it will perform identically when run “from the top down.” If a group of tests share common prerequisites, let all of them use a common ancestor which, in turn, uses all the rest.