为什么会有一个#!perl位于.t文件的顶部?
我注意到有一个为什么会有一个#!perl位于.t文件的顶部?,perl,testing,Perl,Testing,我注意到有一个#!perl在perl测试的顶部,.t,据我所知,您不能将其作为/test.t执行,因为这需要它们是可执行的,并使用完整路径。那么为什么这些文件通常都有这个 告诉编辑器语法突出显示文件为Perl代码 (可选)在运行此文件时,提供一组默认的切换到perl。(见附件。) (顺便说一下,在UNIX系统上,扩展是无关的)。如果文件有执行位设置,OS将考虑文件一个程序,这样您就可以运行它。当您尝试这样做时,OS将查看第一行以确定哪个命令(和参数)。使用调用程序。但是,这与此无关,因为操作系统
#!perl
在perl测试的顶部,.t
,据我所知,您不能将其作为/test.t
执行,因为这需要它们是可执行的,并使用完整路径。那么为什么这些文件通常都有这个
perl
。(见附件。)(顺便说一下,在UNIX系统上,扩展是无关的)。如果文件有执行位设置,OS将考虑文件一个程序,这样您就可以运行它。当您尝试这样做时,OS将查看第一行以确定哪个命令(和参数)。使用调用程序。但是,这与此无关,因为操作系统不会搜索非绝对路径的
$PATH
,它只会搜索相对于当前目录的路径,因此#!perl
将不起作用。实际上,您需要绝对路径。)我希望,尽管这些文件不是可执行文件,即使是可执行文件,如果它在当前目录中,它也只能执行perl,但它被作为“文件魔术”放在那里,将该文件标识为perl文件。命令可以读取这些文件并显示每个文件的类型。它需要设置magic配置文件以将其映射到Perl上,至少在我的Macintosh上,这是不典型的。然而,它也可以为人类读者和编辑程序清楚地识别文件。想象一下,您不知道这是一个perl测试,只看到了.t扩展——没有太多信息。打开它,viola,它肯定是一个perl文件。.t我办公室的测试文件是可执行的,并且以开头/opt/my-organization/bin/perl
——不知道你的。@Aristotle——你不一定需要绝对路径。如果本地目录中有perl可执行文件,它也可以工作——至少在我的Macintosh上是这样。试试这个:创建一个文件,比如t.boo,#!boo\necho'boo'
并使其可执行。然后将/bin/sh
链接到本地目录中的boo
。我认为,这可能取决于系统,当您使用/t.boo
时,它将起作用。我以为它也会搜索你的路径,但显然我错了。我的小实验在我的Macintosh上运行。在我的*nix系统上,它不适用于/test.t
,除非它使用绝对路径。。。e、 g.它不能只使用#!perl
如果它是可执行的。我不知道开关。。。不确定编辑器参数。。。(我使用绝对路径仅仅是因为FHS实际上说perl二进制文件应该在哪里,SUS需要一个)vim似乎仍然在没有#的情况下高亮显示相同的文件代码>当然不是每个人都使用vim。。。但我想我应该说“找一个更聪明的编辑”。。。和开关。。。我不认为使用任何。。。我想如果我使用污染测试。。。那么,我有什么理由拥有一个#!在我的.t中,如果你拿出#告诉vim文件是Perl的代码>行,您正在强迫它猜测。在您的情况下,显然您很幸运,它仍然能够正确地猜测,但是当您可以使用这种指定文件类型的标准方式时,使用不可靠的启发式有什么意义呢?@Xenotheracide:如果我在我的主目录中创建一个空的foo.t
文件,vim会猜测它是一个tads
文件,不管那是什么。所以vim有可能在某些时候猜错了。(即使它从来没有这样做过,它也可能对其他人查看您的代码有所帮助。)至于交换机:有些人编写测试是为了在污染模式下运行,即f.ex。