[英]Generate a data structure in Perl
我有Perl“配置文件”包含這樣的數據結構:
'xyz' => {
'solaris' => [
"value1",
"valueN",
],
'linux' => [
"valueX",
"valueN",
],
},
我稱他們做的很簡單:
%config = do '/path/to/file.conf';
現在,我想“生成”這樣的配置文件(直接構造數據結構“結構”並將其打印在配置文件中)。 我可以用正常的方式填充哈希(數組或任何東西)的散列,但是如何在配置文件中將其轉儲?
這樣做有干凈簡單的方法嗎? 而不是像以下那樣做臟事:
print $FH "'xyz' => {\n";
print $FH " 'solaris' => [\n";
等等
我“猜”Data :: Dumper可以做到這一點..
謝謝!
你要:
$Data::Dumper::Terse = 1;
請參閱文檔 。
$ Data :: Dumper :: Terse或$ OBJ-> Terse([NEWVAL])
設置時,Data :: Dumper將發出單個非自引用值作為原子/術語而不是語句。 這意味着在可能的情況下將避免使用
$VAR
n名稱,但是請注意,這樣的輸出可能並不總是可以通過eval
進行解析。
更新(以解決以下評論):
Data :: Dumper將添加正確的標點符號,以便您准確地獲得所提供的內容。 如果你給它一個哈希引用,那么你將獲得一個以花括號開頭和結尾的字符串。
$ perl -MData::Dumper -E'$Data::Dumper::Terse=1; say Dumper { foo => { bar => "baz" }}'
{
'foo' => {
'bar' => 'baz'
}
}
如果你給它一個數組引用,那么你將得到一個以方括號開頭和結尾的字符串。
$ perl -MData::Dumper -E'$Data::Dumper::Terse=1; say Dumper [ foo => { bar => "baz" }]'
[
'foo',
{
'bar' => 'baz'
}
]
如果由於某種原因,你不想要那些,那么給它一個值列表。
$ perl -MData::Dumper -E'$Data::Dumper::Terse=1; say Dumper ( foo => { bar => "baz" })'
'foo'
{
'bar' => 'baz'
}
如果你有一個哈希引用並且你不想要周圍的大括號(這看起來像一個奇怪的要求,說實話)然后在將引用傳遞給Dumper()
之前取消引用它。 這會將哈希引用轉換為哈希,並通過傳遞給函數將哈希“展開”到列表中。
$ perl -MData::Dumper -E'$Data::Dumper::Terse=1; $ref = { foo => { bar => "baz" }}; say Dumper %$ref'
'foo'
{
'bar' => 'baz'
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.