YAML ではどう書くか perl に教えてもらう方法
設定ファイルを書くときに、単純なハッシュやリストのときは良いのですが、データ構造が複雑になってきたときは、ちょっとややこしくなってきます。
そんなときは、YAML::Dump() に教えてもらえます。
#!/usr/bin/perl use strict; use warnings; use YAML; my $data = { key01 => 'val01', key02 => [ 'val03', 'val04', { key03 => 'val05', key04 => 'val06', }, ], key05 => { key06 => 'val07', key07 => 'val08', }, key08 => { key09 => { key10 => [ 'val09', 'val10', 'val11' ], }, }, kye11 => { key12 => [ key13 => [ qw/val12 val13 val14/ ], key14 => [ qw/val15 val16 val17/ ], ], }, }; $data->{key16} = { key17 => $data->{key02}[2], key18 => $data->{key08}{key09}, }; print Dump $data;
書き慣れた perl でデータを書いて、Dump に渡すだけです。値にリファレンスを持っていると、ちゃんとアンカーに変換してくれます。
--- key01: val01 key02: - val03 - val04 - &1 key03: val05 key04: val06 key05: key06: val07 key07: val08 key08: key09: &2 key10: - val09 - val10 - val11 key16: key17: *1 key18: *2 kye11: key12: - key13 - - val12 - val13 - val14 - key14 - - val15 - val16 - val17
ただ、FormValidator::Simple の
{ date => ['year', 'month', 'day'] } => [ 'DATE' ]
のように、キーがハッシュリファレンスになるようなものは、リファレンスが文字列に変換されてしまい使えません。おそらく、YAML のシンタックス自体が対応してないと予想していますが、ちゃんと仕様を調べてはいません。