PerlとRubyの間でYAMLを介して交換されるデータに問題があります。私は1:16
のようなnumber:numberのようないくつかの値を持っています。PerlとRuby間のYAMLデータ交換の問題
PerlのYAMLライブラリ(TinyとXS)は、1:16
を引用符なしでエンコードします。 RubyのYAMLライブラリ(Psych)はこれを文字列として解釈せず、代わりに何らかの形でFixnumの値4560
になります。どのようにこの変換の問題をどちらの側で修正するのか分かりません。
私のユースケースのYAMLのすべての値は、オブジェクトまたは文字列でなければなりません。そのようなオプションが存在するならば、Perl YAMLライブラリにすべての値を引用するように指示することができました。あるいは、すべての値を文字列として解釈するようにRuby YAMLライブラリに指示する方法はありますか?何か案は?
両側で言語を変更することは、論理的にはオプションではありません。
たPerl:
use YAML::XS qw(DumpFile);
my $foo={'abc'=>'1:16'};
DumpFile('test.yaml',$foo);
ルビー:
require('yaml')
foo=YAML.load_file('test.yaml')
puts(foo['abc'])
Rubyコードが4560
を印刷します。コメントの1つは4560
を1:16
からどうやって得るかを考え出したもので、1時間16分が秒に変換されています。ああ、大丈夫。
デコードに使用しているRubyコードとPerlコードのサンプルYAMLをいくつか挙げてください。 – Schwern
4560は1時間16分の秒数です(うるう秒がないと仮定します)。 – ikegami
生成されたYAMLファイルはどのように見えますか? – bta