在代码块消除歧义的hashref前面的+的历史是什么?

时间:2009-10-24 09:59:56

标签: perl syntax hash

我想更多地了解一下通常放在hashref前面的+,它有助于消除代码块的歧义。

  • 什么时候刚推出?

  • 谁先介绍它(推荐它)?

  • 人们是如何在引入之前解决问题的?

  • 使用此语法时会想到任何琐事或注意事项?

1 个答案:

答案 0 :(得分:9)

从匿名hashref构造函数中消除代码块歧义的具体情况不能比匿名hashref构造函数更早,后者在1993-4中添加了Perl 5.0。在此之前,问题不存在。

但是“一元加”已经存在了很长时间 - 至少从Perl 4开始(它在Perl 1中不存在,但是在我介绍的几年里它可以在任何时间添加,据我所知)。它总是做同样的事情,强迫它的RHS被评估为一个术语,而不是在上下文中可能有意义的任何其他东西,并区分,例如:

print (1 + 2), 42; # Does nothing useful with 42!

print +(1 + 2), 42; # Prints 3 and 42.