我加载以下.yaml文件
foo : bar
s : 1
hx: 0x34
Run Code Online (Sandbox Code Playgroud)
用这段代码:
use YAML qw(LoadFile Dump);
use Data::Dumper;
my $d=LoadFile("test.yaml");
print Dumper($d);
print "x =", $d->{hx},"\n";
print "x/2 =", $d->{hx}/2,"\n";
print "hex(x)/2 =", hex($d->{hx})/2,"\n";
Run Code Online (Sandbox Code Playgroud)
而输出是
Output:
> ./yaml.pl
$VAR1 = {
'foo' => 'bar',
'hx' => '0x34',
's' => '1'
};
x =0x34
x/2 =0
hex(x)/2 =26
Run Code Online (Sandbox Code Playgroud)
这意味着它将所有标量视为字符串,这是我没想到的.从CPAN的YAML文档http://metacpan.org/pod/YAML我假设这是通过隐式标记处理的,并且模块将识别十六进制数.
有人知道怎么做这个吗 ?