Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么会有一个#!perl位于.t文件的顶部?_Perl_Testing - Fatal编程技术网

为什么会有一个#!perl位于.t文件的顶部?

为什么会有一个#!perl位于.t文件的顶部?,perl,testing,Perl,Testing,我注意到有一个#!perl在perl测试的顶部,.t,据我所知,您不能将其作为/test.t执行,因为这需要它们是可执行的,并使用完整路径。那么为什么这些文件通常都有这个 告诉编辑器语法突出显示文件为Perl代码 (可选)在运行此文件时,提供一组默认的切换到perl。(见附件。) (顺便说一下,在UNIX系统上,扩展是无关的)。如果文件有执行位设置,OS将考虑文件一个程序,这样您就可以运行它。当您尝试这样做时,OS将查看第一行以确定哪个命令(和参数)。使用调用程序。但是,这与此无关,因为操作系统

我注意到有一个
#!perl
在perl测试的顶部,
.t
,据我所知,您不能将其作为
/test.t
执行,因为这需要它们是可执行的,并使用完整路径。那么为什么这些文件通常都有这个

  • 告诉编辑器语法突出显示文件为Perl代码
  • (可选)在运行此文件时,提供一组默认的切换到
    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中,如果你拿出
    #行,您正在强迫它猜测。在您的情况下,显然您很幸运,它仍然能够正确地猜测,但是当您可以使用这种指定文件类型的标准方式时,使用不可靠的启发式有什么意义呢?@Xenotheracide:如果我在我的主目录中创建一个空的
    foo.t
    文件,vim会猜测它是一个
    tads
    文件,不管那是什么。所以vim有可能在某些时候猜错了。(即使它从来没有这样做过,它也可能对其他人查看您的代码有所帮助。)至于交换机:有些人编写测试是为了在污染模式下运行,即f.ex。