2007-04-26 00:11:43

YAMLで困ること

[Perl] [YAML]

タブ使用禁止でスペースのみは慣れる(未だに嫌だが)

こういう時に困る。
my $ftp = Net::FTP->new( '192.168.0.1', Debug => 1, Passive => 1 );
のパラメータ部分をYAMLにすると

Net::FTP:
  - 192.168.0.1
  - Debug
  - 1
  - Passive
  - 1

となって読み辛いし、説明し辛い。コメント(#)必須。

※ , と => は同義語。
ex) http://search.cpan.org/~nwclark/perl-5.8.8/pod/perlop.pod#Comma_Operator___
Net::FTPはモジュール内で '192.168.0.1' をshiftして、残りの配列をそのままハッシュに代入している。

YAMLを直感的に書き辛い時はYAML::Syckで確認。

use YAML::Syck;
use Data::Dumper;
my $ref = {
        net_ftp_opt => [
                '192.168.0.1',
                Debug => 0,
                Passive => 1
        ],
};
my $yaml = YAML::Syck::Dump($ref);
print $yaml, "\n";
my $perl = YAML::Syck::Load($yaml);
print Dumper($perl), "\n";

こういうのが出てくると泣ける(Net::FTP::Commonとか)
config:
  -
    LocalFile: test.dat
    Pass: password
    User: id
  - Debug
  - 1
  - Timeout
  - 120