我将通过将哈希值转储到文件来创建yaml文件。但如果该值未定义,则打印~
。如果值未定义,我需要打印nill
。我需要设置哪个变量才能将未定义的值设为Nill
#!/usr/bin/perl
use strict;
use warnings;
use YAML qw(Dump Bless);
my $a=1;
my $b;
my $hash = { a => $a,b => $b };
open(FH,">file.yaml") or die "Can't open file.yaml: $!";
print FH Dump($hash);
close FH;
我需要输出
a : 1
b : Nill
但它的印刷
a : 1
b : ~
答案 0 :(得分:0)
nill
和Nill
对YAML都没有任何意义,除非作为字符串,因此YAML不会为undef
生成任何内容。如果您希望输出包含nill
或Nill
,则需要将其作为字符串存在于数据结构中。您可以使用以下代码将散列中的未定义值转换为字符串Nill
:
for (values %$hash) {
$_ = 'Nill' if !defined($_);
}
如果您想要null
或Null
(而不是nill
或Nill
),那么您已经拥有了。{p> ~
,null
和Null
是等效的。见上述规范的第10.3.2节。