Perl: Can't pass an "on-the-fly" array to a sub -


स्ट्रिपटाइम (), cpan.org के अनुसार:

  प्रिंट स्ट्रफ़टाइम ($ टेम्पलेट, @lt);  

मैं सिर्फ इस एक के लिए सही पर्ल कोड नुस्खा नहीं समझ सकता। यह एक त्रुटि रिपोर्टिंग रखता है जहां मैं स्प्रटाइम () कॉल करता हूं:

  ... उपयोग करें दिनांक :: स्वरूप; ... sub parse_date {if ($ _ [0]) {$ _ [0] = ~ / (\ d {4}) /; मेरी $ y = $ 1; $ _ [0] = ~ s / \ d {4} //; $ _ [0] = ~ / (\ d \ d) \ डी (\ d \ d) /; वापसी [$ 2, $ 1, $ y]; } वापसी [7,7,2010]; } Foreach मेरे $ groupnode ($ groupnodes- & gt; get_nodelist) {my $ groupname = $ xp- & gt; खोजें ('नाम / पाठ ()', $ groupnode); मेरी $ entrynodes = $ xp- & gt; खोजें ('प्रविष्टि', $ groupnode); मेरे $ entrynode ($ entrynodes- & gt; get_nodelist) के लिए {... मेरी $ date_added = parse_date ($ xp- & gt; खोजें ('date_added / text ()', $ entrynode)); ... $ समूहों {$ groupname} {$ entryname} = {..., 'date_added' = & gt; $ दिनांक_added, ...}; ...}} ... मेरे $ इमेज = $ अधिकतम और एलटी; = 12? 0: 1; ... जबकि (मेरे ($ समूह नाम, $ प्रविष्टियां) = प्रत्येक% समूह) {... जबकि (मेरा ($ एंटैंटनाम, $ विवरण) = प्रत्येक% $ प्रविष्टियां) {... my $ d = @ $ $ details - & gt; { 'DATE_ADDED'}}; $ लेखक- & gt; डेटा एलेमेंट ("सृजन", स्ट्रिपटाइम ($ दिनांक_टामप्लेट, (0,0,12, @ $ d [0 ^ $ इमाडे], @ $ d [1 ^ $ इमाडे] -1, @ $ d [2 ], 0,0,0))); } ...} ...  

अगर मैं स्ट्रेटटाइम () द्वारा आवश्यक सरणी को पास करने के लिए उपयोग करता हूं, तो मुझे मिलता है: तिथि के लिए 2 आर्ग का प्रकार :: फ़ॉर्मेट :: स्ट्रिपटाइम चाहिए सरणी (नहीं सूची में) ./blah.pl लाइन 87, पास "))"

यदि मैं आवश्यक सरणी को पास करने के लिए [] का उपयोग करता हूं, तो मुझे मिलता है: तिथि 2 का प्रकार: फॉर्मेट :: strftime सरणी होना चाहिए (अज्ञात सूची नहीं ([]]) ./blah.pl पर लाइन 87, "के पास")

मैं कैसे पर्ल में एक उप करने के लिए उड़ पर एक सरणी दे सकता है ? यह आसानी से PHP, पायथन, जे एस, आदि के साथ किया जा सकता है। लेकिन मैं इसे पर्ल के साथ नहीं समझ सकता।

संपादित करें: मैंने इन कुछ पंक्तियों में कोड घटा दिया है, और मुझे अभी भी मिला है सटीक समस्या:

  #! / Usr / bin / perl चेतावनियों का उपयोग करें; सख्त उपयोग; उपयोग दिनांक :: प्रारूप; मेरा @ डी = [7,13,2010]; मेरा $ इमाडे = 1; प्रिंट स्ट्रिपटाइम (q "% Y-% m-% dT12: 00: 00", (0, 120, $ d [0 ^ $ imday], $ d [1 ^ $ imday] -1, $ d [2] ], 0,0,0));  

जहां एक सरणी की आवश्यकता है और आपके पास तदर्थ सूची है, आपको वास्तव में एक सरणी बनाएं इसे एक अलग वैरिएबल की आवश्यकता नहीं है, आप ऐसा कर सकते हैं:

<प्री> स्ट्रफ़्टटाइम ($ date_template, @ {[0,0,12, $ d [0 ^ $ imday], $ डी [1 ^ $ इमाडे], $ d [2], 0,0,0]});

मुझे कोई सुराग नहीं है कि क्यों दिनांक :: प्रारूप आपको इस भद्दापन के अधीन करेगा और न केवल कई स्केलर पैरामीटर की अपेक्षा करें; मूर्खतापूर्ण लगता है (और विपरीत कैसे अन्य मॉड्यूल strftime को लागू) ग्राहम बार आमतौर पर इस से बेहतर इंटरफेस तैयार करते हैं। हो सकता है कि जब से प्रोटोटाइप सामान्य प्रयोजनों के लिए एक शांत विचार की तरह लग रहा था, तब से यह दिनांक।


Comments