了解perl
中2下面的catfile命令之间的区别my $test = File::Spec->catfile(A, B,C);
和
my $test = File::Spec->catfile((A, B), C);
答案 0 :(得分:3)
好吧,第二个包括“C”,第一个没有。 [更新:问题现在已经更新,它们都包含“C” ]
除此之外,他们是一样的。方法调用(以及一般的子例程调用)的参数被展平为单个列表。括号不做任何事。
(旁白:从技术上讲,列表(A, B, C)
和((A, B), C)
构建了不同的选择,但差异发生在非常低的水平,除非它在Perl内部引发了一些非常广泛的特技,{ {1}}无法区分两个列表。)
在某些情况下,这样的括号虽然没有做任何事情,但可能有助于澄清 - 在这种情况下,作者可能会添加它们以明确“A”和“B”在概念上不同于“C”的论点”。如果您熟悉File :: Spec的API,那么您将知道catfile
的最后一个参数是文件名,而其他参数是目录名。这可能是他们用括号在视觉上分开的原因。