gpt4 book ai didi

perl - 如何检查 LVALUE 是否代表 SCALAR

转载 作者:行者123 更新时间:2023-12-05 08:35:28 27 4
gpt4 key购买 nike

多年来,我一直在使用包含以下条件的代码

ref \$_[0] eq 'SCALAR'

我一直希望有一个 ARRAYSCALAR,但最近我将 substr() 传递给了那个参数。意想不到的事情发生了。条件返回错误值。

然后我想通了。 ref 返回了 LVALUE 而不是 SCALAR

由于 LVALUE 是一种奇怪的引用类型,我需要检查它后面是否有标量。

我如何检查此 LVALUE 是否代表 SCALAR

最佳答案

LVALUE 是一种特殊的魔法值,在分配给它时会发生作用。因此,例如,调用 f($hash{foo}) 不会立即在 %hash 中创建 foo 条目;相反,一个临时的 LVALUE 被创建并作为 $_[0] 传递给 sub。如果 $_[0] 随后被赋值,该值将存储为 $hash{foo}

LVALUE 是一个标量(即它包含一个值),只是一种奇数类型。

因此很可能只需接受 SCALAR 和 LVALUE 作为有效值即可修复代码。但这将取决于进行检查的确切原因。也可能是这样的检查是一个逻辑错误,实际上并不需要,或者是有问题的。例如,ref\$_[0] 不应返回 ARRAY。

关于perl - 如何检查 LVALUE 是否代表 SCALAR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75308004/

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