函数参数通常用逗号分隔(,
),但在某些情况下也可能通过空格分隔,如print FILEHANDLE 'string'
。为什么这两种分离器都是必需的?Perl中的函数参数分隔符?
3
A
回答
9
print
是有特殊的语法规则特殊内置Perl函数。 Documentation列出四种可能的调用:
print FILEHANDLE LIST
print FILEHANDLE
print LIST
print
因此,虽然在一般的函数参数由逗号(,
)是分离的,这是从歧义消除内容打印目标的例外打印。显示此行为的另一个函数是system
。
共享此语法的其他功能称为"Indirect Object Notation"。在形式表达:
function object arg1, arg2, … angn
# ^- no comma here
等同于:
object->function(arg1, arg2, … argn)
让下面的语句对是相同的:
$foo = new Bar;
$foo = Bar->new;
间接对象符号具有several problems,一般应该避免,保存为数不多的知名成语,如print F "something"
4
在该示例中,因为print
接受参数列表并且具有默认值。所以你需要告诉打印一个标量和打印到文件句柄之间的区别。
解释器可以告诉之间的区别:
print $fh "some scalar text";
print $bar, "set to a value ","\n";
print $fh;
print $bar;
但是,这是一个比较特殊的情况 - 大部分功能不喜欢的工作。我通常建议打印,围绕大括号中的文件句柄arg区分。
你可以看一下原型,以此来获得perl的做事情的参数,但我还常建议,使更少的代码清晰
+1
有我这是一个额外的转折点。在上面的例子中,第三行和第四行将打印$ fh和$ bar到当前选定的文件句柄。另一方面,“打印FH”会打印$ _到真正的文件句柄FH。 – BarneySchmale
相关问题
- 1. Perl分割函数 - 连续分隔符
- 2. 参数分隔符
- 3. 函数中的非分隔参数
- 4. 获取函数参数分隔符的API函数
- 5. 在Excel函数中分隔分号分隔的字符串
- 6. 使用逗号分隔的字符串作为函数参数
- 7. 逗号分隔的字符串值,函数参数
- 8. - 在函数参数的perl
- 9. python将参数传递给函数,用字符分隔
- 10. Excel的VBA函数处理分隔符
- 11. 函数分隔符的序列strtok
- 12. WordPress的分隔符函数算
- 13. Perl字符串作为函数参考
- 14. 如何在perl中分隔数组?
- 15. @签名为url参数分隔符?
- 16. 自定义Rails URL参数分隔符?
- 17. PHP与Django参数分隔符
- 18. $ location改变了吗?参数分隔符
- 19. Perl,DBI和MySQL分隔符
- 20. string.Split函数在C#标签分隔符
- 21. 的JavaScript:发送参数的逗号分隔字符串的JavaScript函数
- 22. 的std ::函数getline:分隔字符与字符数
- 23. 通字符串变量函数的参数为逗号分隔的列表
- 24. Perl:函数没有足够的参数
- 25. 传递给函数的Perl参数
- 26. 带参数的perl函数调用
- 27. 在perl中区分字符串和数字参数
- 28. perl中的函数perl
- 29. Perl中使用两个分隔符
- 30. 通逗号分隔的参数js函数
不幸的是,这是错误的。 'print'是具有自定义分析规则的运算符。 'print HANDLE LIST'不是一个间接的方法调用。它会忽视HANDLE的课程。你可以使用'perl -MScalar :: Util = blessed -E'sub IO :: File :: print {die}来验证它是否有福(* STDOUT {IO});打印标准输出“foo \ n”; STDOUT-> print(“foo \ n”);'' – ikegami
@ikegami:非常感谢您的指出! –