2013-05-17 40 views
8

看来,perl将{+0,0}视为BLOCK和{0,0} EXPR 但是为什么?这是一个特殊的规定吗?,为什么地图{+0,0}()正确,但地图{0,0}()不是?

如果我想确保{}是匿名哈希,无论大括号包含什么,我必须在{}之前加一个'+'吗?

谢谢。

+2

'{; ...}是更强的习惯(对读者来说更好的提示),以强制解析为BLOCK。 '+'通常用于相反('+ {...}'强制解析为EXPR)。 – ikegami

回答

3

为什么?因为它可能是两者之一,并且解析器看起来不够远,无法确定需要确定的时间。

您是否必须在{}之前放置'+'才能将其视为匿名哈希构造函数,而不考虑{}的内容?是。

+3

虽然'perl -MO = Deparse -e“map {+0,0} 1..2”'输出的东西不能在原始脚本中使用,这很有趣。 –

相关问题