我正試圖通過一個小的Perl學習項目,需要從套接字讀取4個無符號整數。我無法獲得超過1整數讀取,並且在挖掘後我找到了一個解決方案。但是,我需要了解什麼,我沒有做正確的socket-> recv()與<>?
例1(通過一對夫婦的Perl書籍,perldocs文檔,等去了也沒有用。): 下面是成功的解決方案代碼(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」參數默認爲「字節」,整數是4個字節?
任何幫助,指針等讚賞。順便說一句,「學習項目」是overthewire.org - 非常酷的東西。
爲了獲得簡單的文檔資料:[perlvar $ /](http://p3rl.org/var#%24INPUT_RECORD_SEPARATOR); '''''對於[readline](http://p3rl.org/readline) – daxim 2011-04-08 19:20:20