मैं एक छोटी पर्ल लर्निंग प्रोजेक्ट के माध्यम से काम करने की कोशिश कर रहा हूं जिसके लिए सॉकेट से 4 हस्ताक्षरित पूर्णांक पढ़ने की आवश्यकता है। मैं 1 से अधिक पूर्णांक पढ़ नहीं पाया, और चारों ओर खोदने के बाद मुझे एक समाधान मिला। लेकिन मैं समझने के लिए मैं सही नहीं किया क्या जरूरतसॉकेट-> आरईवी() बनाम <>?
उदाहरण 1 (और कोई लाभ नहीं हुआ पर्ल किताबें, 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