YAML.pm bug?
use strict; use warnings;
use Data::Dumper;
use YAML;
my $config = {
default => [ 1, { '*' => 1 }, ],
deny => ['script'],
};
my $yaml = Dump($config);
print $yaml;
print Dumper( Load($yaml) );
output:
---
default:
- 1
- '*': 1
deny:
- script
YAML Error: Couldn't parse single line value
Code: YAML_PARSE_ERR_SINGLE_LINE
Line: 5
Document: 1
at /usr/local/share/perl/5.8.7/YAML.pm line 60
This code works fine with YAML::Syck
.
qr/\.(css|js|swf)$/
みたいなのを YAML で書くにはどうしたらいいのだろうとおもって、とりあえず YAML モジュールを使って
use YAML;
my $data = {
regex => qr/\.(css|js|swf)$/,
};
print Dump( $data );
こんなのをしてみる。
結果。
---
regex: !perl/regexp:
REGEXP: \.(css|js|swf)$
こんな風に書くのか。これを LoadFile しても
$VAR1 = {
'regex' => qr/(?-xism:(?:\.(css|js|swf)$))/
};
となるのでちゃんと使えるようだ。
でも YAML::Syck だと Load Dump ともにうまく動かない。