你的问题最终是“为什么是在第6行标量上下文@backwards”,其中 引发了一个问题,“我怎样才能确定一个术语的上下文?”。
上下文由下式确定“什么是围绕”(即它的“上下文”)的术语。
如何确定术语的上下文?通过查看 正在使用该术语的运算符/函数。
如果你 没有有用的stackoverflow伙伴来告诉你它的上下文,你可以按照什么步骤来找出@ backwards的上下文?
在这里,我们有
print @backwards."\n"
所以有两个运营商/功能。我们如何知道哪一个将背景 提供给@ backwards?通过咨询优先。近perlop.pod的顶部,我们有Perl的 优先级表(打印是一个“列表操作符”):
left terms and list operators (leftward)
...
left + - .
...
nonassoc list operators (rightward)
哦,太好了,现在我们需要知道相片是否是向左或向右。通过咨询 在perlop中的“条款和列表操作符(左侧)”部分( 优先级列表之后)我们看到,打印是向右这里,因为我们还没有括号括 它的参数。
所以串联是更高的优先级,所以级联提供上下文@backwards。
下一步是检查文档(再次perlop中),用于连接:
Binary "." concatenates two strings.
字符串是标量,所以二进制 “”连接两个标量。
,我们终于拥有它!
@backwards具有标量上下文因为级联提供标量上下文 其每个操作数。
呜。这很简单,不是吗:-)
保持列表上下文会'印刷@backwards,“\ n”` – 2011-01-26 09:17:19
感谢您的回答的另一个选择。 – Prakhar 2011-01-26 12:07:56