我有以下几乎正常的代码:

my $results = { data => [
   map {
      my $f = 

我有以下几乎正常的代码:

my $results = { data => [
   map {
      %{

我有以下几乎正常的代码:

my $results = { data => [
   map {
      my $f = 

我有以下几乎正常的代码:

<*>

只有我更喜欢以下内容:

<*>

但是这会产生语法错误。我怎样才能做我想要的,或者我现在的版本是最好的?

更新:抱歉以前的额外分号。现在已经很晚了。不知道我是怎么错过它的。谢谢你们!

->TO_JSON; $f->{display_field} =

我有以下几乎正常的代码:

<*>

只有我更喜欢以下内容:

<*>

但是这会产生语法错误。我怎样才能做我想要的,或者我现在的版本是最好的?

更新:抱歉以前的额外分号。现在已经很晚了。不知道我是怎么错过它的。谢谢你们!

->display_field($q); $f; } $rs->all ]};

只有我更喜欢以下内容:

<*>

但是这会产生语法错误。我怎样才能做我想要的,或者我现在的版本是最好的?

更新:抱歉以前的额外分号。现在已经很晚了。不知道我是怎么错过它的。谢谢你们!

->TO_JSON}, display_field =>

我有以下几乎正常的代码:

my $results = { data => [
   map {
      my $f = 

我有以下几乎正常的代码:

<*>

只有我更喜欢以下内容:

<*>

但是这会产生语法错误。我怎样才能做我想要的,或者我现在的版本是最好的?

更新:抱歉以前的额外分号。现在已经很晚了。不知道我是怎么错过它的。谢谢你们!

->TO_JSON; $f->{display_field} =

我有以下几乎正常的代码:

<*>

只有我更喜欢以下内容:

<*>

但是这会产生语法错误。我怎样才能做我想要的,或者我现在的版本是最好的?

更新:抱歉以前的额外分号。现在已经很晚了。不知道我是怎么错过它的。谢谢你们!

->display_field($q); $f; } $rs->all ]};

只有我更喜欢以下内容:

<*>

但是这会产生语法错误。我怎样才能做我想要的,或者我现在的版本是最好的?

更新:抱歉以前的额外分号。现在已经很晚了。不知道我是怎么错过它的。谢谢你们!

->display_field($q), }, $rs->all ]};

只有我更喜欢以下内容:

<*>

但是这会产生语法错误。我怎样才能做我想要的,或者我现在的版本是最好的?

更新:抱歉以前的额外分号。现在已经很晚了。不知道我是怎么错过它的。谢谢你们!

->TO_JSON; $f->{display_field} =

我有以下几乎正常的代码:

<*>

只有我更喜欢以下内容:

<*>

但是这会产生语法错误。我怎样才能做我想要的,或者我现在的版本是最好的?

更新:抱歉以前的额外分号。现在已经很晚了。不知道我是怎么错过它的。谢谢你们!

->display_field($q); $f; } $rs->all ]};

只有我更喜欢以下内容:

<*>

但是这会产生语法错误。我怎样才能做我想要的,或者我现在的版本是最好的?

更新:抱歉以前的额外分号。现在已经很晚了。不知道我是怎么错过它的。谢谢你们!

有帮助吗?

解决方案

它只提供语法错误,因为Perl认为你需要在 map {...} 之后省略逗号,因为它将该映射解析为块,而不是表达式。将 + 放在前面会解决这个问题。此外,您不能在匿名哈希中使用分号:

my $results = { data => [
   map +{
#      ^----------------- plus sign added
      %{

它只提供语法错误,因为Perl认为你需要在 map {...} 之后省略逗号,因为它将该映射解析为块,而不是表达式。将 + 放在前面会解决这个问题。此外,您不能在匿名哈希中使用分号:

<*>->TO_JSON}, display_field =>

它只提供语法错误,因为Perl认为你需要在 map {...} 之后省略逗号,因为它将该映射解析为块,而不是表达式。将 + 放在前面会解决这个问题。此外,您不能在匿名哈希中使用分号:

<*>->display_field($q); # ^---- should be comma or nothing }, $rs->all ]};

其他提示

问题在于,Perl看起来不够远,无法确定 {是否意味着“启动匿名哈希引用”。或者“启动代码块”。 (理想情况下)查找相应的} 并查看是否存在逗号,并相应地执行操作,但事实并非如此。它只是看起来有点前进并试图猜测。这次是错的,你得到一个不应该存在的逗号的语法错误,除了它应该不移动它。

perldoc -f map 会告诉大家对这个。基本上,它说如果你把 + {,Perl会理解这意味着“不是代码块”。并猜测它是一个哈希引用。这可能是您的语法错误的原因。作为另一个建议,可能会说 map({HASH STUFF},$ rs-&gt; all) - 我敢打赌,Perl不会猜测它是代码引用。

我无法让它工作,但没有 $ rs - &gt; TO_JSON 或名为 $ q 的变量无论如何,我无法让任何这个工作。我希望这有帮助。如果没有,请发布更多代码。别担心,我们不咬人。

此外,虽然我们正在努力,但为什么不这样写呢:

my $results;
$results->{data} = [ map MAGIC MAP STUFF, $rs->all ];

可能更具可读性,特别是如果你一次性向 $ results 添加很多内容。

我不完全确定你正在寻找什么样的结构。第一个示例中的 map 已经返回了一个hashrefs列表(每个版本的 $ f )。

如果您只想要与第二个示例类似的语法,那么您几乎是对的;你需要摆脱你的地图块中无关的分号,并使用一对curlies来制作一个匿名的散列引用。

类似的东西:

my $results = { data => [
    map { { %{

我不完全确定你正在寻找什么样的结构。第一个示例中的 map 已经返回了一个hashrefs列表(每个版本的 $ f )。

如果您只想要与第二个示例类似的语法,那么您几乎是对的;你需要摆脱你的地图块中无关的分号,并使用一对curlies来制作一个匿名的散列引用。

类似的东西:

<*>->TO_JSON}, display_field =>

我不完全确定你正在寻找什么样的结构。第一个示例中的 map 已经返回了一个hashrefs列表(每个版本的 $ f )。

如果您只想要与第二个示例类似的语法,那么您几乎是对的;你需要摆脱你的地图块中无关的分号,并使用一对curlies来制作一个匿名的散列引用。

类似的东西:

<*>->display_field($q) } } $rs->all ]};

我总是在块形式中使用map,并构造代码以便于分开。虽然你可以在开头卷曲前放一个+来使用表达形式,但这对你真的很重要吗?

除了发生的一切,你的第一个例子看起来很好。继续前进并解决实际问题。 :)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top