2009-07-02 12 views
4

$var = pack "C2", 0x20, 0x30;perlでバイト配列を作成して使用するにはどうすればよいですか?

が十分に機能しているようですが、今はどのように配列の要素に対処していますか?要素を変更しますか?可能であれば、インプレース。パック/アンパックセマンティクスはそれほどフレンドリーではありません。

現在、私はsubstr($var, $index, 1, substr($var, $index, 1) + 10)を使用して、10個の要素をインプレイスに追加しています。

イニシャライザの場合、0x20の100バイトの配列が必要な場合は、どのような方法が最適ですか? $var = "\x20" x 100作品は、それは '正しい'方法ですか?

+1

そのsubstrは機能しません。 – ysth

答えて

8

二つの質問、2つの答え:

Q.十分に動作しているようですが、今どのように私は、配列の要素に対処しますか?

A. vec()はあなたの友達です:

vec($var, $index, 8) += 10; 

は、あなたがやりたいだろう。

intayizerの場合、100バイトの0x20の配列が必要な場合は、どのような方法が最適ですか? $ var = "\ x20" x 100作品は、それは '正しい'方法ですか?

A.私の本では問題ありません。

2

あなたのニーズに合っていますか? Tie::Array::Pack

+1

cpanのperldocから: "Since(since $)、$ index、1、chr(ord(substr($ var、$ index、1))+ 10)このモジュールは、各FETCHのために各STOREとunpack()のためにpack()する必要があります。ネイティブの配列よりもはるかに遅いので、裸のpack/unpackよりもはるかに面白いとしても、はるかに良いとは思いません。 – davenpcj

関連する問題