近頃版/another blog@hatena/Wiki/BBS
< 出社時刻 | かいもの >
YAMLを使ったインチキ分散オブジェクトを使っていて問題が浮上。0から始まる数字だけの文字列を、YAMLモジュールLoad()による読み込み時に数字だと認識して正規化してしまうようで、先頭の0が取れてしまう。
仕方ないのでYAMLモジュールの動きをデバッガで追って読み込み時の正規化部分に回避コードを差し込んだ。以下そのpatch。
--- /usr/lib/perl5/site_perl/5.8.1/YAML.pm 2002-06-25 14:02:09.000000000 +0900 +++ YAML.pm 2004-12-16 19:30:39.000000000 +0900 @@ -1322,6 +1322,7 @@ my ($value) = @_; $value =~ s/\s*$//; return $value if $value eq ''; + return $value if $value =~ /^0\d+$/; return $value + 0 if $value =~ /^-?\d+$/; return $value * 1.0 if ($value =~ /^[+-]?(\d*)(?:\.(\d*))?([Ee][+-]?\d+)?$/) and
_あとはこれをメンテナーに送るかどうかだよなあ。英語苦手なんだけども。