为什么要把'#!Perl模块中的/ usr/bin/false`?

Red*_*ket 3 perl cpan

我正在查看CPAN Perl模块的源代码,Digest::Perl::MD5并注意到它有她的爆炸#! /usr/bin/false.这是Digest/Perl/MD5.pm...... 的前几行......

#! /usr/bin/false
#
# $Id: MD5.pm,v 1.19 2004/02/14 02:25:32 lackas Exp $
#

package Digest::Perl::MD5;
use strict;
use integer;
use Exporter;
use vars qw($VERSION @ISA @EXPORTER @EXPORT_OK);
Run Code Online (Sandbox Code Playgroud)

...为什么Digest :: Perl :: MD5的作者会使用#! /usr/bin/false?如果我的系统没有/usr/bin/false/bin/false反过来怎么办?

Que*_*tin 9

为什么Digest :: Perl :: MD5的作者会使用#!在/ usr /斌/假?

因此,如果有人试图将模块用作可执行文件(Perl $ ./MD5.pm),它将悄然死亡而不是尝试将模块作为程序执行.

如果我的系统没有/ usr/bin/false但是有/ bin/false呢?

然后,它会很容易地抱怨它无法找到/usr/bin/false是否有人试过.

  • 昆汀是完全正确的.我想补充说.`pm`文件中的任何shebang行都是完全可选的,不正常.99%的时候,Perl模块没有安装在`PATH`中,也没有可执行权限.有时,您可能还会看到一个带有`#!/ usr/bin/env perl` shebang行的模块,它通常表示模块_could_被执行(例如运行内置测试).但除非你有一个非常不寻常的情况,否则我不会在.pm`文件中添加一个shebang行.它只会为未来的读者提出问题(如你的). (2认同)