2009-07-02 68 views
4

$var = pack "C2", 0x20, 0x30;如何在perl中創建和使用字節數組?

似乎工作得不錯,但現在我該如何解決數組元素?對元素進行更改?如果可能的話,在原地。 pack/unpack語義不是很友好。

當前我正在使用substr($var, $index, 1, substr($var, $index, 1) + 10)在原地添加10個元素。

對於初始化器,如果我需要一個0x20的100字節數組,那麼最好的方法是什麼? $var = "\x20" x 100作品,這是'正確'的方式?

+1

該substr不會工作;你必須:substr($ var,$ index,1,chr(ord(substr($ var,$ index,1))+ 10))(但用vec代替) – ysth 2009-07-03 04:30:17

回答

8

兩個問題,兩個答案:

Q.似乎工作不夠好,但是現在我如何解決數組的元​​素?

A. vec()是你的朋友:

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

會做你想要什麼。 Q.如果我需要一個100字節的0x20數組,那麼最好的方法是什麼? $ var =「\ x20」x 100作品,這是'正確'的方式嗎?答:在我的書中沒有問題。

2

這是否適合您的需求? Tie::Array::Pack

+1

從cld的perldoc:「Since這個模塊必須爲每個STORE打包(),並且爲每個FETCH打開(),它比本地數組慢得多「,所以我不確定這樣做會好得多,即使它比裸包/解包更友善。 – davenpcj 2009-07-08 14:35:41

相關問題