YAMLの適当さ。
いままで、インデントに対して凄い厳密かと思ったけどそうでもなかった。
use strict; use warnings; use YAML; use YAML::Syck; my $d = YAML::Syck::Load(<<"EOT"); indent1_0: indent1_1: indent1_2: foo indent2_0: indent2_1: indent2_2: foo indent_mix: indent_mix1: indent_mix2: foo key_o: - array0_key1: _01 array0_key2: - { _02_array0 : vvvv } - { _02_array1 : vvvv } key_t: - array0_key1: _01 array0_key2: - { _02_array0 : vvvv } - { _02_array1 : vvvv } EOT warn YAML::Dump $d; local $Data::Dumper::Indent = 1; warn Data::Dumper::Dumper $d;
これを実行すると
--- indent1_0: indent1_1: indent1_2: foo indent2_0: indent2_1: indent2_2: foo indent_mix: indent_mix1: indent_mix2: foo key_o: - array0_key1: _01 array0_key2: - _02_array0: vvvv - _02_array1: vvvv key_t: - array0_key1: _01 array0_key2: - _02_array0: vvvv - _02_array1: vvvv $VAR1 = { 'key_o' => [ { 'array0_key2' => [ { '_02_array0' => 'vvvv' }, { '_02_array1' => 'vvvv' } ], 'array0_key1' => '_01' } ], 'indent_mix' => { 'indent_mix1' => { 'indent_mix2' => 'foo' } }, 'indent2_0' => { 'indent2_1' => { 'indent2_2' => 'foo' } }, 'key_t' => [ { 'array0_key2' => [ { '_02_array0' => 'vvvv' }, { '_02_array1' => 'vvvv' } ], 'array0_key1' => '_01' } ], 'indent1_0' => { 'indent1_1' => { 'indent1_2' => 'foo' } } };
こうなる。
インデントの深さ混ぜても問題無い上に期待したとおりに動いていて逆に怖い。