为什么perl print filehandle语法是这样的?

Kri*_*uri 14 oop perl

我想知道为什么perl创建者选择了一种不寻常的语法来打印到文件句柄:

    print filehandle list
Run Code Online (Sandbox Code Playgroud)

文件句柄后没有逗号.我看到它是区分"打印列表"和"打印文件句柄列表",但为什么ad-hoc语法比创建两个函数更受欢迎 - 一个打印到stdout,一个打印到给定的文件句柄?

在我的搜索中,我发现这是一个间接对象语法的解释,但是perl 4和之前没有print函数,而面向对象的特性相对较晚才进入perl?有人熟悉perl的打印历史吗?

the*_*ber 0

为什么不?它简洁且有效,符合 Perl 的 DWIM 精神。

很可能是因为拉里·沃尔喜欢那样。

  • @KrishnaNandamuri:许多 Perl 函数与所有其他函数不同。 (4认同)
  • @Krishna Nandamuri,`sort`、`map`、`grep`、`system` 和 `exec` 都像 `print` 一样将 block 作为第一个参数。所以毕竟不是那么不寻常。 (3认同)
  • 一方面,它增加了更多的解析工作,因为 print 不再像所有其他函数一样。(再说一遍,我谈论的是在添加面向对象功能之前的 Perl,并且这种第一个参数后无逗号的语法在方法中变得很常见。) (2认同)