मैं XML-LibXSLT मॉड्यूल के मेंटेनर और परीक्षणों में से एक एक गैर-मौजूद URL तक पहुंच की आवश्यकता है (तो वहाँ एक गैर उपलब्ध URL हो जाएगा)। समस्या यह थी कि किसी ने बताया कि उनके सिस्टम पर यूआरएल मौजूद था, इसलिए मैंने स्थानीयहोस्ट पर एक यादृच्छिक बंदरगाह आवंटित करने का फैसला किया जहां मुझे यकीन है कि कोई वेब-सेवा नहीं होगी। ऐसा किया गया था:पर्ल: कैसे portably एक TCP पोर्ट आरक्षण
# We reserve a random port to make sure the localhost address is not
# valid. See:
#
# https://rt.cpan.org/Ticket/Display.html?id=52422
my $sock = IO::Socket::INET->new(
Proto => 'tcp',
);
my $port = $sock->sockport();
$file = "http://localhost:${port}/allow.xml";
अब, समस्या यह है कि $ बंदरगाह परिभाषित किया गया है और वैध लिनक्स पर (एक आरक्षित बंदरगाह के मूल्य के) है, लेकिन यह विंडोज पर काम करने के लिए प्रकट नहीं होता है - इस बग को देखने के रिपोर्ट - https://rt.cpan.org/Ticket/Display.html?id=71456। मेरा सवाल है: मैं पर्ल 5 में यूनिक्स, मैक ओएस एक्स और विंडोज़ में पोर्टेबल रूप से एक नया, यादृच्छिक, अभी तक कब्जा कर लिया बंदरगाह कैसे आरक्षित कर सकता हूं?
सादर,
Shlomi मछली
+1। कनेक्ट() अनावश्यक है। – EJP
@EJP: सच है, मैं बेहद कमजोर याद करता हूं कि पोर्ट बंदरगाह आवंटन के लिए कुछ हद तक आलसी दृष्टिकोण ले रहा है, कम से कम 'INADDR_ANY' बाउंड सॉकेट के लिए। – Hasturkun
बंदरगाह() समय पर बंदरगाह आवंटित किया गया है। – EJP