在 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)
” 因此,要么这无法完成,要么我没有使用正确的模板字符串。
注意:我正在使用大端数据。
有任何提示吗?
I have a struct wich contains:
struct mystruct{
int id[10];
char text[40];
unsigned short int len;
};
And I'm trying to unpack it in a single line, something like this:
my(@ids,$text,$length) = unpack("N10C40n",$buff) ;
But everything is going to the first array(@ids), i've tried templates as "N10 C40 n
" and "(N10)(C40)(n)
"
So, either this can't be done or I'm not using the proper template string.
Note: I'm using big endian data.
Any hints?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在列表分配中,第一个数组或散列将吃掉所有内容(它如何知道在哪里停止?)。 试试这个:
你也可以说
In list assignment the first array or hash will eat everything (how would it know where to stop?). Try this instead:
you could also say
如果
@ids
的顺序无关紧要:If the order of the
@ids
does not matter: