/ / Perlでは、いくつかの変数にどのように展開できますか? - perl、unpack

Perlでは、いくつかの変数にどのように展開できますか? - perl、unpack

私は含まれている構造体を持っています:

struct mystruct{
int                id[10];
char               text[40];
unsigned short int len;
};

そして、私はこれを一行で解凍しようとしています。

  my(@ids,$text,$length) = unpack("N10C40n",$buff) ;

しかし、すべてが最初の配列(@ids)に行きます。私は "N10 C40 n"と"(N10)(C40)(n)" だから、これはできないか、適切なテンプレート文字列を使用していません。

注:私はビッグエンディアンのデータを使用しています。

何かヒント?

回答:

回答№1の場合は7

リストの割り当てでは、最初の配列またはハッシュがすべてを食べます(どのように停止するかは分かりますか?)。代わりにこれを試してください:

my @unpacked        = unpack "N10Z40n", $buff;
my @ids             = @unpacked[0 .. 9];
my ($text, $length) = @unpacked[10, 11];

あなたも言うことができる

my @ids;
(@ids[0 .. 9], my ($text, $length)) = unpack "N10Z40n", $buff;

回答№2の場合は1

もし @ids 関係ない:

my ($length, $text, @ids) = reverse unpack("N10C40n",$buff) ;