YAML::Tinyでコロンを利用する方法
小粋空間 » Programming Language » Perl » YAML::Tinyでコロンを利用する方法
YAML::Tinyでコロンを利用する方法を紹介します。
1.問題点
次のようなYAMLデータを書いてみました。
test: ok:
下のPerlスクリプトでYAMLデータを読み込んでみました。
#!/usr/bin/perl
use strict;
use YAML::Tiny;
my $data= YAML::Tiny->new;
$data = YAML::Tiny->read( 'sample1.yaml' );
print $data->[0]->{test};
スクリプトを実行したところ、下記のエラーが発生しました。
% ./test.pl
YAML::Tiny found illegal characters in plain scalar: 'OK:' at test.pl line 8
また、キーにコロンを含むパターンも試してみました。
test:: ok
スクリプトは下記です。
#!/usr/bin/perl
use strict;
use YAML::Tiny;
my $data= YAML::Tiny->new;
$data = YAML::Tiny->read( 'sample1.yaml' );
print $data->[0]->{'test:'};
この場合、下記のエラーが発生しました。
% ./test.pl
YAML::Tiny failed to classify line 'test: OK:' at test.pl line 8
こちらは「Tinyは'test: OK:'行の分類に失敗した」というエラーのようです。
おそらく、値やキーに含まれるコロンがこのままのフォーマットでは適正にパースされないようです。
ということで、YAML::Tinyでコロンを利用する方法を紹介します。
2.YAML::Tinyでコロンを利用する
YAML::Tinyでコロンを利用するには、値全体をクォーテーションで括ります。
test2: "ok:"
実行結果は下記のとおりです。
% ./test.pl
ok:
シングルクォーテーションでも大丈夫です。
test2: 'ok:'
値ではなく、キーにコロンが含まれる場合も同様です。
"test:": ok
実行結果は下記のとおりです。
% ./test.pl
ok
3.参考サイト
参考サイトは下記です。ありがとうございました。