in reply to Partial strict using require

The reason you see this behavior is that use strict is a lexical pragma. It is in effect only for the scope in which it occurs, either a block or a file.

It is important to understand that strict does not hide variables. Declaring variables with my(), which makes them lexical, hides the variables. It is true that using strict requires you to declare your variables. However, variables can also be declared as package variables with use vars, and variables can be declared with my() to hide them whether or not strict vars is in effect.

Instead of separating your code into different files, some with strict and some without, you could separate your code into separate blocks in the same file, as in:

{ use strict; # some strict-compliant code } # some non-strict compliant code