Provided by: libperl-critic-pulp-perl_99-1_all bug

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" add-on.  It asks you not to use a "#!"
       interpreter line in a .pm module file.

           #!/usr/bin/perl -w      <-- bad
           package Foo;
           ...

       This "#!" does nothing but might make a reader think it's supposed to be a program instead
       of a module.  Often the "#!" is a leftover cut and paste from a script into a module,
       perhaps when grabbing a copyright notice or similar intro.

       Of course a module works the same with or without, so this policy is low severity and
       under the "cosmetic" theme (see "POLICY THEMES" in Perl::Critic).

       Only the first line of a file is a prospective "#!" interpreter.  A "#!" anywhere 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.  Modules are identified by the .pm filename because
       it's hard to distinguish a module from a script just by the content.

   Disabling
       If you don't care about this you can always disable "ProhibitModuleShebang" from your
       .perlcriticrc in the usual way (see "CONFIGURATION" in Perl::Critic),

           [-Modules::ProhibitModuleShebang]

CONFIGURATION

       "allow_bin_false" (boolean, default true)
           If true then allow "#!/bin/false" in module files.

               #! /bin/false           <-- ok

           Such a "#!" prevents executing the code if accidentally run as a script.  Whether you
           want this is a personal preference.  It indicates a module is not a script and so
           accords with "ProhibitModuleShebang", but in general it's probably unnecessary.

SEE ALSO

       Perl::Critic::Pulp, Perl::Critic

HOME PAGE

       <http://user42.tuxfamily.org/perl-critic-pulp/index.html>

COPYRIGHT

       Copyright 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2019, 2021 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>.

perl v5.32.1                            Perl::Critic::Policy::Modules::ProhibitModuleShebang(3pm)