Perl 标量和 json
Perl scalar and json
我不确定下面具体在做什么:
scalar %{ $units}
在下面:
if ( defined( $units ) && scalar %{ $units} ) {
该脚本运行大部分条目,但在运行到最后时出现此错误。
hash- or arrayref expected (not a simple scalar, use allow_nonref to
allow this) at /usr/share/perl5/JSON.pm line 154.
由于限制,我不能分享更多的代码,但我正在努力解决这个问题,这样错误就不会出现,但我对上面的用法缺乏理解:
scalar %{ $units }
正确诊断现阶段发生的事情。
这似乎是一个哈希数组,我们正在检查它是否包含任何内容?
这一行上方的评论说:
# We only want to move on if there were units for this timeframe
代码正在测试 $units 是否已定义,如果是,假设它是一个 hashref 并测试哈希是否为非空。
这里的 scalar
没有效果,因为 if 给出了 && 操作标量上下文,并且 && 将该上下文传递给它的左操作数,所以 %{$units}
无论如何都会有标量上下文。如果散列为空,则标量上下文中的散列生成假值;如果散列不为空,则生成真值(描述存储桶使用情况的字符串,但通常它是什么并不重要,除非它是真的)。
我不确定下面具体在做什么:
scalar %{ $units}
在下面:
if ( defined( $units ) && scalar %{ $units} ) {
该脚本运行大部分条目,但在运行到最后时出现此错误。
hash- or arrayref expected (not a simple scalar, use allow_nonref to allow this) at /usr/share/perl5/JSON.pm line 154.
由于限制,我不能分享更多的代码,但我正在努力解决这个问题,这样错误就不会出现,但我对上面的用法缺乏理解:
scalar %{ $units }
正确诊断现阶段发生的事情。
这似乎是一个哈希数组,我们正在检查它是否包含任何内容?
这一行上方的评论说:
# We only want to move on if there were units for this timeframe
代码正在测试 $units 是否已定义,如果是,假设它是一个 hashref 并测试哈希是否为非空。
这里的 scalar
没有效果,因为 if 给出了 && 操作标量上下文,并且 && 将该上下文传递给它的左操作数,所以 %{$units}
无论如何都会有标量上下文。如果散列为空,则标量上下文中的散列生成假值;如果散列不为空,则生成真值(描述存储桶使用情况的字符串,但通常它是什么并不重要,除非它是真的)。