To a certain extent, the use declaration is, shall we say, “overloaded.” In some ways it is a lot like require, whereas in other ways it absolutely is not. Here is another case where Perl might have infuriated semantic purists, in favor of being a pragmatically useful tool. I suggest that you always treat the statement as a declaration, not as an executable statement. Put all of the necessary declarations at the beginning of the module (beginning always with use strict; use warnings;), and leave them there.