从我读到的,perl没有整数或字符串的实数类型,对他来说任何$变量都是标量.
最近我在一个旧脚本上遇到了很多麻烦,这个脚本生成了另一个进程所需的JSON对象,JSON中的值必须是整数,经过一些调试我发现因为一个简单的打印函数:
JSON :: encode_json
生成一个字符串而不是整数,这是我的例子:
use strict;
use warnings;
use JSON;
my $score1 = 998;
my $score2 = 999;
print "score1: ".$score1."\n";
my %hash_object = ( score1 => $score1, score2 => $score2 );
my $json_str = encode_json(\%hash_object); # This will work now
print "$json_str";
Run Code Online (Sandbox Code Playgroud)
它输出:
score1: 998
{"score1":"998","score2":999}
Run Code Online (Sandbox Code Playgroud)
不知何故,perl变量有一个类型,或者至少这是JSON :: encode_json的思考方式.
有没有办法以编程方式找到此类型以及为什么在进行上述连接操作时更改此类型?