Translate

2012年2月25日土曜日

YAML

■Input(プログラム内Yaml形式を変数にロード) ・Load() 引数として指定した文字列行までを入力データとして セパレータ(---)で区切られたYAML形式データを読み込むことができる。 スカラーデータの場合セパレータは --- > としないとエラーとなる
#!/usr/bin/perl                                                                 
use strict;
use warnings;
use utf8;
use YAML;

binmode STDIN, ":utf8";
binmode STDOUT, ":utf8";

my ($string, $ref_array) = Load(<<'...');
--- >
なにかしらの
文字列
で
す
---
- Jan
- Feb
- Mar
...
    
use Dumpvalue;
my $d = Dumpvalue->new();

$d->dumpValue($string);
$d->dumpValue($ref_array);
実行結果。
'なにかしらの 文字列 で す
'
0  'Jan'
1  'Feb'
2  'Mar'
■Input(プログラム外Yaml形式を変数にロード) ・LoadFile() config.yml
- aaa
- 
  - b1
  - b2
  - 
    - b3.1
    - b3.2
- ccc

#!/usr/bin/perl
              
use strict;
use warnings;
use utf8;
use YAML;
 
binmode STDIN, ":utf8";
binmode STDOUT, ":utf8";
 
my $data = YAML::LoadFile('config.yml');

use Dumpvalue;
my $d = Dumpvalue->new();
$d->dumpValue($data);
■Output(標準出力に出力) ・Dump()
#!/usr/bin/perl
 
use strict;
use warnings;
use utf8;
use YAML;
 
binmode STDIN, ":utf8";
binmode STDOUT, ":utf8";
 
my $data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];

print YAML::Dump($data); 
---
- 
  - 1
  - 2
  - 3
- 
  - 4
  - 5
  - 6
- 
  - 7
  - 8
  - 9
■Output(ファイルに出力) ・DumpFile()
#!/usr/bin/perl
 
use strict;
use warnings;
use utf8;
use YAML;
 
binmode STDIN, ":utf8";
binmode STDOUT, ":utf8";
 
my $data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];

YAML::DumpFile('output.yml', $data);