Perl::Critic::Policy::Modules::RequireFilenameMatchesPackage - Package declaration must match filename. |
Perl::Critic::Policy::Modules::RequireFilenameMatchesPackage - Package declaration must match filename.
This Policy is part of the core Perl::Critic distribution.
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.
This Policy is not configurable except for the standard options.
Chris Dolan <cdolan@cpan.org>
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.
Perl::Critic::Policy::Modules::RequireFilenameMatchesPackage - Package declaration must match filename. |