• ベストアンサー

バイナリデータの操作

Perlでバイナリデータの操作(たとえば画像のピクセル部分の変更)をする場合 配列に一つ一つ数値を入れて操作するのと スカラでデータをいっぺんにパック(?)して操作するのとでは どちらがいいのでしょうか? ようはC言語のchar配列の操作のようなことがしたいのですが。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

パックって、packのことでしょうか? まとめた形のまま、たとえばファイルに保存したり、読み出したり するにはそれが便利だと思いますし、メモリも配列よりは 少なくなると思います。 しかし、配列のように個々の値を変えたりするなら、結局 unpackして配列として扱わなければならなくなりますね。 数値が整数と決まっているのなら、vecを使う手も考えられます。 vec($aaa, 0, 8) = 0xFF; vec($aaa, 1, 8) = 0x3C; vec($aaa, 2, 8) = 0xA3; ..... と代入しておき、あとで$aaaから vec($aaa, 1, 8) で、オフセット1の場所に入れた0x3Cの値を取り 出す、などということができます。これが一番メモリ効率としては いいように思います。 詳しくは、perldoc -f vec をご覧ください。