YAML(ヤムル)とは
id:fbisさんのところでYAML(ヤムル)を知りました。
YAMLは、JSONとよく似ている。
実際、仕様がかぶるケースがあり、JSONをYAMLとして処理できる場合もあるらしい。
Perlとしては、無名配列と無名ハッシュに上手く対応している。
言葉で説明すると大変なので、サンプルをお読みください。
ちなみに、YAMLモジュールは標準(v5.8.8)では入っていませんでしたので、CPANからインストールしました。
◆サンプル(yaml.pl)
use strict; use warnings; use YAML (); use Data::Dumper (); my $yaml_array = <<'__YAML__'; - aaa - - b1 - b2 - - b3.1 - b3.2 - ccc __YAML__ my $data = YAML::Load( $yaml_array ); print Data::Dumper::Dumper( $data ); print YAML::Dump(["aaa", ["b1", "b2", ["b3.1", "b3.2"]], "ccc"]); my $yaml_hash = <<'__YAML__'; A: aaa B: B1: bbb1 B2: bbb2 C: ccc __YAML__ $data = YAML::Load( $yaml_hash ); print Data::Dumper::Dumper( $data ); print YAML::Dump({"A"=>"aaa", "B"=>{"B1"=>"bbb1", "B2"=>"bbb2"}, "C"=>"ccc"});
◆実行結果
C:\perltest>perl yaml.pl $VAR1 = [ 'aaa', [ 'b1', 'b2', [ 'b3.1', 'b3.2' ] ], 'ccc' ]; --- - aaa - - b1 - b2 - - b3.1 - b3.2 - ccc $VAR1 = { 'A' => 'aaa', 'C' => 'ccc', 'B' => { 'B1' => 'bbb1', 'B2' => 'bbb2' } }; --- A: aaa B: B1: bbb1 B2: bbb2 C: ccc
YAMLを利用するとYAMLデータを外だしにして初期(ini)ファイルに活用できそうですね。
実際、Plaggerなどで活用されているとネットに書いてありました。
尚、サンプルでは、YAML::Loadを使用していますが、初期ファイル等から読み込むにはYAML::LoadFileを使用します。