PerlのXML::SimpleでEnd tag mismatch

Perlの話です。
XML文字列のパースにXML::Simpleを使っていたら「End tag mismatch (hoge != foo) [Ln: 125, Col: 495518205]」ていうエラーがでた。

パーサーを変更して解決した。

XML::Simpleのデフォルトのパーサーは「XML::SAX」のようです。
おわり。

参考
http://www.perlmonks.org/?node_id=706838
http://iandeth.dyndns.org/mt/ian/archives/000589.html

Pocket

Posted in Perl.

今日はPerlと向き合った

初めてのPerl 第5版 Perl CPANモジュールガイド

今日はPerlと向き合った日。
設定ファイルをYAML形式で外だしして読み込むための、YAML.pmのラッパーをかいた。

My/Config.pm

使うとき

機能はキーを指定してデータをとってくるだけ。
キーを指定しない場合は全てとってくる。

わざわざモジュール書くほどなのか謎だが、「My::Config」という名前で使えることにすごく意味があると思っている。

まぁやってることはたいしたことないけど、以下のことを覚えた。

  • パッケージ名とファイルの置き方の関係性 (My/Config.pm → package My::Config)
  • パッケージの書き方
  • パッケージの使い方
  • use lib を絶対パスで直書きしてると死ぬ
  • FindBin
  • テストとTest::Simple

あと、テストが全くなくてあれだったのでテスト書きだした。

Pocket

Posted in Perl.

Perlのdecode

Perlのdecodeを使って [utf-8] → [euc-jp] に変換するときに変なエラーが起こったので、その対策をメモ。

これを実行したところ、以下のエラーが出た。

Cannot decode string with wide characters #この後ろにEncode.pmのエラー行がでる

調べたところ、UTF-8フラグが立っているとこのエラーがでてしまうらしい。

これを回避するために、decodeを呼び出す前にUTF-8フラグをおろせばいいようです。

これで成功する。

_utf8_offでUTF-8フラグをおろすことができるみたい。

参考

Pocket

Posted in Perl.