in reply to where to use "use" and package

As I understand it, when your script is being compiled, the default package (read symbol table?) is main:: until a package statement is processed, at which point a new (default) symbol table is set up.

As the scoping of symbols in imported (use'd) modules is defined by the current default symbol table. Anything use'd before the first package will be aliased in main::, so after the package Mods::Debug statement, you could equally refer to copy() as main::copy() or File::Copy::copy().

The upshot: If you want to use symbols in a package, use them in the package where you want to use them:).

Update:Corrected a couple of typoes. s/Main/main/ and s/File::copy()/File::Copy::copy()/.