GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
Perl::Critic::Policy::Modules::ProhibitModuleShebang(3) User Contributed Perl Documentation Perl::Critic::Policy::Modules::ProhibitModuleShebang(3)

Perl::Critic::Policy::Modules::ProhibitModuleShebang - don't put a #! line at the start of a module file

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.

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]

"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.

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

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

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>.

2021-02-27 perl v5.32.1

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.