2008年0327

perl ハッシュのシリアライズとPackとStorableとurf8

perlのutf8の実装はやっぱりまだ、不安定やね
pack('(N/A*)*',%hash);
でhashのシリアライズそのものはできるのだが・・・できるのだが・・・
ファイルに出力したデータのunpackで数%程度の文字化け
binmode,binmode :utf8どちらをつけてもダメ
そりゃぁ、AじゃなくてUだもんなぁ、packの書式とか思う。
でもどちらかというと、packしてバイナリ化したデータの入力でコケている気もする。

というわけで、素直に、
nstore \%hash, $finename;
%hash= %{ retrieve $finename};
で処理。
なんというかpureperlでのutf8処理の時もutf8の一部の文字処理が怪しかったけど、おまえもかって感じ

あとnstore とかstoreとか・・・いや、気持ちはわかるけど、ファイルの先頭にネットワークバイトオーダなのか、ホストバイトオーダーなのか書き込んで自動で判別してよとか思う。Intelマシンの方が多い弊社の環境ではリトルエンディアンをデフォルトとして、ビックエンディアンのマシンでオーダを置換してくれた方がありがたいんだが(wって読み込みが常にretreave関数のみでnretreaveが無いって事はやってくれるのか・・・リトルエンディアンstoreをビックエンディアンretreaveで読める? まぁ、検証しようにもビックエンディアンの石がない。まぁ、ネットワークバイトオーダーよりもIntel 8086チップオーダーをデフォルトにしてネットワークバイトオーダーをイリーガルにしてほしい、速度重視の僕が通りますけど、実行効率は大差ありませんよと
必要なのは
use Storable qw(nstore retrieve);

の方か
まぁ、こんな事で4時間ぐらいはまってましたという話。
※packの方がsotreよりも高速って記事を読んだのでなんとかpackでと思ったのが過ちの始まりだった。utf8を使う処理はとにかくCライブラリにより近い方を呼ぶのが吉だなぁ・・・全部文字化けではなく一部文字が文字化けってのが一番痛い XML::Simpleも同様で、PurePerlなXML::Simpleは信用できないのでlibXMLかExpat呼んだ方がよさげ・・・

perl -v
This is perl, v5.8.8 built for i486-linux-gnu-thread-multi

404 Blog Not Found:perl - 勝手に添削 - Storable
単純データのシリアライズ速度比較 - Tociyuki::Diary



関連するエントリ一覧

関連するタグ

その他






トラックバック

このエントリーのトラックバックURL:



コメント

コメント一覧

心は萌え(管理人)(--)『

お気軽にコメント下さい。ただし、基本的に読んではいますが、お返事はほとんどしません。お返事が必要な方はTOPページにあるメールアドレスへメールを送って下さい。

 

アクセスゲート : 2008年03月27日 18:18『

最強アクセスアップツ-ル
アクセスゲート
上位入賞者に→高額賞金を贈呈!
http://acgt.jp/

ブログ・HP・プロフ
メルマガ等で登録可能です!

【今なら無料登録するだけで】
【500アクセス分のポイントを】
【全員にプレゼント~3/31マデ】

是非、無料登録をお願いします。
突然の書込み失礼致しました。

 



コメントしてください




保存しますか?






このエントリーを含むはてなブックマーク

* 人気blogランキングこのサイトを投票
http://revilog.com/ TOPへ