/ / В Perl, как мога да разопаковам няколко променливи? - Perl, разопаковайте

В Perl, как мога да разопаковам няколко променливи? - Perl, разопаковайте

Имам структура, която съдържа:

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)" Така че, това не може да бъде направено или аз не използвам правилния низ шаблон.

Забележка: Използвам големи endian данни.

Някакви намеци?

Отговори:

7 за отговор № 1

При задаването на списъка първият масив или хеш ще яде всичко (как ще знае къде да спре?). Опитайте това вместо това:

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;

1 за отговор № 2

Ако редът на @ids няма значение:

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