データファイルをYAMLで扱おうと思い、YAML Perl モジュール (0.35)でちょこちょこと実験。
ある UTF-8 で書かれたファイルを読み込んで YAMLで Dump したら、日本語の部分がことごとく quote される。 これはいただけない。
my $ESCAPE_CHAR = '[\\x00-\\x08\\x0b-\\x0d\\x0e-\\x1f]';
で判別している。手抜きではないか。 さてどうしたものか。
と考えていたら、よく考えたら Perl 5.8.x だとバイト単位ではなく文字単位で正規表現マッチングさせられるんだったことを思い出した。 手抜きだなんて思って失礼しました。
データファイルを読んで utf8::decode してから YAML で Dump するようにしたらクオートされなくなった。Good.
Perl 5.6 系だとどうすればいいんだろ。 YAML.pm を直接書き換えて
use utf8;
を追加すれば期待通りにはなるのだが、ちょっと嫌だな。
短い sequence は
- a - b - c
ではなく
[a, b, c]
の形式で出して欲しい。YAML.pm のチェックしたところ
my $y = YAML->new; $y->InlineSeries(5); print $y->dump($data);
のようにインラインにしてよい上限の個数を指定すればよいことを知る。
[ UTF8 フラグ ]
Naney (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。
nDiki は1999年1月に始めたコンピュータ日誌を前身とする Naney の Web 日記(兼パーソナルナレッジベース)です。
#nNote タグがついている記事は他の記事に比べて、より断片的・未整理・不完全なちょっとしたノートです。まだ結論に至っていない考えなども含まれます。頻繁/大幅に更新したり削除したりすることがあります。
ナレッジベースアプリケーション Obsidian で書いているノートの一部を notes.naney.org で 公開しています。
※内容は個人的見解であり所属組織とは関係ありません。