NAME
Perl::Critic::Policy::Modules::ProhibitModuleShebang - don't put a #! line at the start of a module file
DESCRIPTION
This policy is part of the Perl::Critic::Pulp
addon. It asks you not to use a #!
interpreter line in a .pm module file.
#!/usr/bin/perl -w <-- bad
package Foo;
...
This #!
does nothing, and might make a reader think it's supposed to be a program instead of a module. Often it's a leftover from cutting and pasting code or a copyright notice from one file into another.
Of course a module works the same with or without, so this policy is low priority and under the "cosmetic" theme (see "POLICY THEMES" in Perl::Critic).
Only the first line of a file is a prospective #!
interpreter. A #!
later is allowed, for example in code which generates other code,
sub foo {
print <<HERE;
#!/usr/bin/make <-- ok
# Makefile generated by Foo.pm - DO NOT EDIT
...
This policy applies only to .pm files. Anything else, such as .pl
or .t
scripts can have #!
(or not) in the usual way. The .pm filename is used because it's quite hard to distinguish a module from a script just from its contents.
Disabling
If you don't care about this you can always disable ProhibitModuleShebang
from your .perlcriticrc in the usual way,
[-Modules::ProhibitModuleShebang]
CONFIGURATION
allow_bin_false
(boolean, default true)-
If true then allow
#!/bin/false
in module files.#! /bin/false <-- ok
This will prevent execution of the code if accidentally run as a script, but whether you think you want this is personal preference. Insofar as it indicates a module is not a script it accords with ProhibitModuleShebang, but in general is probably unnecessary.
SEE ALSO
Perl::Critic::Pulp, Perl::Critic
HOME PAGE
http://user42.tuxfamily.org/perl-critic-pulp/index.html
COPYRIGHT
Copyright 2010 Kevin Ryde
Perl-Critic-Pulp is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version.
Perl-Critic-Pulp is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with Perl-Critic-Pulp. If not, see <http://www.gnu.org/licenses>.