http://www.perlmonks.org?node_id=11108514


in reply to Re^3: Strict and warnings: which comes first?
in thread Strict and warnings: which comes first?

Since Perl 5.12, package has started to become more interesting. You can do stuffs like:

use v5.16; use strict; use warnings; package Foo::Bar 1.2 { ...; }

Although the extended syntax for package doesn't need feature or a use VERSION line to enable it, it seems like a good idea to put the use VERSION before it rather than after, so people with older Perls get an error message about their Perl being too old, instead of an error message about being unable to parse the package statement.

And even in cases where I'm supporting older Perls, I keep all that stuff before package.

Sometimes I'll also use modules before package if I know I'm not importing anything into my namespace from them, like:

use v5.16; use strict; use warnings; use Scalar::Util (); package Foo::Bar 1.2 { ...; my $addr = Scalar::Util::refaddr($ref); # use fully-qualified nam +e because not imported }