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

djantzen has asked for the wisdom of the Perl Monks concerning the following question:

I am in inner turmoil about my placement of use statements in modules, and I wonder if some kind monks have any opinions to share. The goal is some kind of conceptual purity, and I've tried a variety of approaches but I'm never happy with one for longer than a module or two. Should the statements come before or after the package statement? Organized alphabetically, or by importance, or by type (pragma, module, base module)?

Stuff I've tried:

  1. package statement, then alphabetical listing like:
    package Foobar; use constant STR => 'quack'; use Data::Dumper; use Quux; use strict; use warnings;

  2. package statement, pragmas, modules, base modules:
    package Foobar; use constant STR => 'quack'; use strict; use warnings; use Data::Dumper; use base 'Quux';

  3. "importance":
    package Foobar; use base 'Quux'; use constant STR => 'quack'; use strict; use warnings; use Data::Dumper;

  4. (My current thoughts) Order by non-package-specific pragmas/modules, package statement, package-specific pragmas/modules.
    use strict; use warnings; use Blarney; package Foobar; use constant STR => 'quack'; use Data::Dumper; use base 'Quux';

The last one I think is the most precise, with a distinction between stuff that needs to be imported into the package Foobar vs. stuff that can exist happily in package main. But it may also be more confusing to someone just looking at the code. {sigh} Thoughts? TIA, djantzen


"The dead do not recognize context" -- Kai, Lexx