cat命令与括号之间的区别

时间:2014-02-05 09:24:43

标签: perl

了解perl

中2下面的catfile命令之间的区别
my $test = File::Spec->catfile(A, B,C);

my $test = File::Spec->catfile((A, B), C);

1 个答案:

答案 0 :(得分:3)

好吧,第二个包括“C”,第一个没有。 [更新:问题现在已经更新,它们都包含“C” ]

除此之外,他们是一样的。方法调用(以及一般的子例程调用)的参数被展平为单个列表。括号不做任何事。

(旁白:从技术上讲,列表(A, B, C)((A, B), C)构建了不同的选择,但差异发生在非常低​​的水平,除非它在Perl内部引发了一些非常广泛的特技,{ {1}}无法区分两个列表。)

在某些情况下,这样的括号虽然没有做任何事情,但可能有助于澄清 - 在这种情况下,作者可能会添加它们以明确“A”和“B”在概念上不同于“C”的论点”。如果您熟悉File :: Spec的API,那么您将知道catfile的最后一个参数是文件名,而其他参数是目录名。这可能是他们用括号在视觉上分开的原因。