/ / Ako sa môžem v Perle rozbaliť na niekoľko premenných? - Perl, rozbaliť

V Perle, ako môžem rozbaliť niekoľko premenných? - Perl, rozbaliť

Mám štruktúru, ktorá obsahuje:

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

A pokúšam sa ho rozbaliť v jednom riadku, niečo takéto:

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

Ale všetko sa deje na prvom poli (@ids), skúsil som šablóny ako "N10 C40 n"a"(N10)(C40)(n)" Takže toto nie je možné urobiť, alebo nepoužívam vhodný reťazec šablón.

Poznámka: Používam veľké endiánske dáta.

Akékoľvek rady?

odpovede:

7 pre odpoveď č. 1

V priradení zoznamu prvé pole alebo hash bude všetko jesť (ako by vedel, kde sa má zastaviť?). Skúste to namiesto toho:

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

môžete tiež povedať

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

1 pre odpoveď č. 2

Ak je poradie @ids nezáleží:

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