カラクリサイクル

『輝かしい青春』なんて失かった人の雑記

YAMLについてちょっと調べてみた

概要: YAMLについてちょっと調べてみた。


Plaggerとかの設定ファイルフォーマットとして使われているYAMLの仕様についてちょっと調べてみた。 どちらかというと、YAMLを書きたい人向け。

YAMLの仕様書の書き方にかかわるとこだけを読んで、 なんとなく分かったことを抜き出しているだけなので、 内容が抜けてたり、用語とかが微妙に間違ってるかもしれません。

なんかおかしいところがあれば、コメントなりで指摘してください。 あと、正確な仕様を知りたい人は、YAMLの仕様書を読んでください。

ハッシュ

---
hash:
  name: value
  foo: bar
---
# こうも書ける
hash: { name: value, foo: bar }

配列

---
array:
  - foo
  - bar
  - baz
---
# こうも書ける
array: [ foo, bar, baz ]

スカラー

---
# 改行がスペースに変換される
foo:
  text text text text
  text text text text
# 改行は保存される
bar: |
  text text text text
  text text text text
# 改行と空行が保存される
baz: >
  text text text text
  text text text text
  text text text text
# エスケープ・シーケンスが解釈される/Perlのqq{}みたいなもの(?)
hoge: "Hello, world\n"
# エスケープ・シーケンスが解釈されない/Perlのq{}みたいなもの(?)
huge: 'AAA BBB CCC'

参照

---
# 参照の定義
foo: &ref bar
# 参照の使用
bar: *ref

こんな感じ

書く分にはこれくらいの知識でかけるかも。

だた、一つのファイルに複数のYAML書けたり、スカラーの型指定したりということまでは いまいち理解しきってないので、そのあたり抜けてます。

あと読み込んだYAMLがどういう構造になるかは、

#!/usr/bin/perl
use strict;
use warnings;
use YAML ();
use Data::Dumper ();
my $yaml = <<'__YAML__';
# ここにYAMLを書く
__YAML__
my $data = YAML::Load( $yaml );
print Data::Dumper::Dumper( $data );

見たいなコードでダンプして調べると分かりやすいかも。