我正在尝试完成一个小型Perl学习项目,需要从套接字中读取4个无符号整数。我只能读取1个整数,经过挖掘后我找到了一个解决方案。但我需要理解我做错了什么(已经查阅了几本Perl书籍、perldocs等,但没有找到答案)。
示例1: 这里是成功的解决方案代码(original),假设两者套接字连接都成功:
{
local $/ = \16; # make <> read in 16 bytes with one swoop.
my @integers = unpack "IIII", <$sock>;
print "numbers: @val\n";
}
示例 2:我尝试了以下代码。如果在解包之前打印输入,只会得到一个整数:
my $input;
$sock->recv($input,16,0);
my @integers = unpack("IIII", $input);
具体问题:
- 在示例1中,"$/"是什么意思?它如何“更改”<>,我以为它读取STDIN?
- 在示例2中,为什么我的recv()不能从套接字中获取多个整数?我的理解(根据perldoc)是“SIZE”参数默认为“bytes”,而整数为4个字节?
任何帮助、指导等都将不胜感激。顺便说一下,“学习项目”是overthewire.org - 非常酷。
<>
只是readline的另一个名称。 - daxim