我不是Perl程序员,但对我正在研究的Pack方法有一些疑问。我看到以下代码:
$diag_cmd = pack("CCSV", DIAG_SUBSYS_CMD_F, DIAG_SUBSYS_PWRDB, PWRDB_DIAG_PKT_SCRIPT | $processor_select, length($s_part)) . $s_part;
在我的理解中,Pack方法获取一些数据值并将其打包成字节。现在我对上面的代码有一些疑问:
. $s_part
。那是什么?答案 0 :(得分:2)
见http://perldoc.perl.org/functions/pack.html;基本上pack采用格式字符串(在您的情况下为CCSV
),告诉它如何将其余参数组合成一个字符串。
|
是按位或运算符;它或两个数字(或两个字符串,但这似乎不是你正在做的)一次一点。所以2 | 9是0b0010 | 0b1001是0b1011是11. 2 | 0只是2。
正如您可以说$x = "a" . "b";
将ab
分配给$x
,在这里您要分配pack的结果和另一个字符串变量的串联。
长度表达式只是其中一个参数;特别是将由模板中的V编码的那个。