perl – 有没有办法测试标量是否已被字符串化?
发布时间:2020-12-15 21:47:49 所属栏目:大数据 来源:网络整理
导读:我正在编写一个从perl结构输出类似于 JSON的东西的东西.我希望引用的行为如下: "string" outputs "string""05" outputs "05""5" outputs "5"5 outputs 505 outputs 5,or 05 would be acceptable JSON :: XS通过测试标量是否已经“字符串化”来处理这个问题,
我正在编写一个从perl结构输出类似于
JSON的东西的东西.我希望引用的行为如下:
"string" outputs "string" "05" outputs "05" "5" outputs "5" 5 outputs 5 05 outputs 5,or 05 would be acceptable JSON :: XS通过测试标量是否已经“字符串化”来处理这个问题,我觉得这很酷.但是我没有办法在没有编写XS的情况下自己做这个测试,我宁愿避免.这可能吗?我没有在CPAN的任何地方找到这个,没有找到关于Scalar :: Util :: looks_like_number等的大量迂回,这完全不是我想要的.我能找到的唯一权宜之处是Devel :: Peek,感觉很邪恶.而且,就像JSON :: XS一样,我对这个场景很好: my $a = 5; print $a."n"; # now $a outputs "5" instead of 5) 解决方法
检查
B::svref_2object 的输出:
use B; ($x,$y,$z) = ("5",5,5.0); print ref(B::svref_2object( $x )),"n"; print ref(B::svref_2object( $y )),"n"; print ref(B::svref_2object( $z )),"n"; 输出: B::PV B::IV B::NV 或者,正如ikegami建议的那样,如果您更愿意查找pPOK标志: if (B::svref_2object( $x )->FLAGS & B::SVp_POK) { print "I guess $x is stringyn"; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |