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

Actually, the use strict pragma and the package statement are not that different.
use strict; # strict is on. { no strict; # strict is off } # strict is on.
package Foo; # Currently in package Foo. { package Bar; # Currently in package Bar. } # Currently in package Foo.

You can't have two current packages at the same time, just like you can't have two strict states at the same time.