2014-09-23 35 views
0

我會傾倒哈希值的文件來創建YAML文件。但如果該值未定義,則打印~。如果值未定義,我需要打印nill。我需要哪些變量來設置,以獲得未定義的值作爲Nilldumpe未定義的哈希值到YAML

#!/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

*「我需要打印nill如果值是不確定的」 *我認爲你應該解釋一下這個,因爲它可能是一個[XY問題(http://meta.stackexchange.com/questions/66377/what-is-在-XY-問題) – Miller 2014-09-23 23:46:08

回答

0

無論nill也不Nill有什麼意義YAML除了作爲一個字符串,所以YAML不會生成undef。如果你想輸出到包括nillNill,就需要存在於你的數據結構爲一個字符串。您可以使用下面的代碼在你的哈希轉換未定義值字符串Nill

for (values %$hash) { 
    $_ = 'Nill' if !defined($_); 
} 

如果你的意思是你想nullNull(而不是nillNill),那麼你就已經擁有了。 ~nullNull是等價的。參見上述規範的第10.3.2節。