Andy Lester > Perl-Critic-1.121_01 > Perl::Critic::Policy::Modules::RequireFilenameMatchesPackage

Download:
Perl-Critic-1.121_01.tar.gz

Dependencies

Annotate this POD

Website

View/Report Bugs
Module Version: 1.121_01   Source   Latest Release: Perl-Critic-1.123

NAME ^

Perl::Critic::Policy::Modules::RequireFilenameMatchesPackage - Package declaration must match filename.

AFFILIATION ^

This Policy is part of the core Perl::Critic distribution.

DESCRIPTION ^

The package declaration should always match the name of the file that contains it. For example, package Foo::Bar; should be in a file called Bar.pm. This makes it easier for developers to figure out which file a symbol comes from when they see it in your code. For instance, when you see Foo::Bar->new(), you should be able to find the class definition for a Foo::Bar in a file called Bar.pm

Therefore, this Policy requires the last component of the first package name declared in the file to match the physical filename. Or if #line directives are used, then it must match the logical filename defined by the prevailing #line directive at the point of the package declaration. Here are some examples:

  # Any of the following in file "Foo/Bar/Baz.pm":
  package Foo::Bar::Baz;     # ok
  package Baz;               # ok
  package Nuts;              # not ok (doesn't match physical filename)

  # using #line directives in file "Foo/Bar/Baz.pm":
  #line 1 Nuts.pm
  package Nuts;             # ok
  package Baz;              # not ok (contradicts #line directive)

If the file is not deemed to be a module, then this Policy does not apply. Also, if the first package namespace found in the file is "main" then this Policy does not apply.

CONFIGURATION ^

This Policy is not configurable except for the standard options.

AUTHOR ^

Chris Dolan <cdolan@cpan.org>

COPYRIGHT ^

Copyright (c) 2006-2011 Chris Dolan.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

syntax highlighting: