in reply to Use of Carp outside of package won't compile...

strict is lexically scoped (so it's affecting the rest of the compilation unit from that line to the end); the import from the use is to the specific package that's currently active. If the use is before the package then the import is making main::croak an alias; when you move it it's made as Test::croak.

The cake is a lie.
The cake is a lie.
The cake is a lie.