gpt4 book ai didi

perl - hashref 查找中的语法错误,看不出原因

转载 作者:行者123 更新时间:2023-12-01 06:32:59 26 4
gpt4 key购买 nike

perl -E 'say for map s/(æ|ø|å)/   {qw(æ ae ø oe å aa)}->{$1}/ger, qw(rød gul blå)'
perl -E 'say for map s/(æ|ø|å)/"".{qw(æ ae ø oe å aa)}->{$1}/ger, qw(rød gul blå)'

上面的第一行在 -e line 1, near "}->" 处给我 syntax error 但第二行打印 roed, gulblaa 符合预期。这是编译器的弱点还是有一些我看不到的原因?我在 5.10、5.22 和 5.26 版本中测试并得到了这种行为。

最佳答案

{...}interpreted作为一个 block ,而不是哈希引用。我们可以通过添加 +

来看到这一点
perl -E'say for map s/(æ|ø|å)/+{qw(æ ae ø oe å aa)}->{$1}/ger, qw(rød gul blå)'

现在可以使用了,因为 unary + 之后是什么必须是一个表达式;所以 + 消除了代码的歧义。然后解释器继续将该构造识别为匿名哈希构造函数。

否则它必须猜测 { 因为它无法在决定它是在解析 block 还是表达式之前解析掉。它可以分析上下文以确定 {...} 是什么,但如果只是将其视为过于复杂的权衡,我认为这是合理的。

在另一个示例中,它是连接运算符 (.)。


有关一元 + 强制将以下代码处理为表达式 的另一个示例,以及有关相关文档的详细信息,请参阅 this post .

关于perl - hashref 查找中的语法错误,看不出原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57784193/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com