मेरे पास एक पर्ल एप्लिकेशन है जो कमांड लाइन से इनपुट को लेता है:मैं संख्याओं की सूची में "1..15,16" जैसे स्ट्रिंग का विस्तार कैसे कर सकता हूं?
application --fields 1-6,8
मुझे कमांड लाइन पर उपयोगकर्ता द्वारा अनुरोध किए गए फ़ील्ड को प्रदर्शित करने की आवश्यकता है।
मैंने '-' को '..' के साथ प्रतिस्थापित करने के बारे में सोचा ताकि मैं उन्हें सरणी में संग्रहीत कर सकूं।
$str = "1..15,16" ;
@arr2 = ($str) ;
@arr = (1..15,16) ;
print "@arr\n" ;
print "@arr2\n" ;
यहां समस्या यह है कि @arr ठीक काम करता है (जैसा कि यह होना चाहिए) लेकिन @ arr2 में संपूर्ण स्ट्रिंग सरणी तत्वों के रूप में विस्तारित नहीं होती है।
मैंने भागने के दृश्यों का उपयोग करने की कोशिश की है लेकिन कोई भाग्य नहीं है।
क्या यह इस तरह से किया जा सकता है?
+1 की आवश्यकता है। "इसे सही करना" हमेशा eval करने के लिए बेहतर है। बहुत कम दुष्प्रभाव। – jrockway
मैं पहले नंबर :: रेंज में कभी नहीं आया हूं। मैंने भविष्य में उपयोग के लिए इसे दायर कर दिया है। मुझे इसके बारे में जागरूक करने के लिए धन्यवाद! –
यदि आप उपयोगकर्ता इनपुट लेते हैं, तो आपका ऐप 1.000000000 तक उड़ाएगा, जब तक आपके पास लगभग 8 जीबी रैम न हो। संख्या :: श्रेणी-> आकार() अभी इसे रोकने के लिए बेकार है क्योंकि यह आकार को समझने के लिए पूरी श्रृंखला उत्पन्न करता है। –