मैं एक ऐसे वेब ऐप से निपट रहा हूं जो घर से उगाए जाने वाले टेम्पलेटिंग सिस्टम का उपयोग करता है जो एचटीएमएल में पर्ल कोड को एम्बेड करने देता है। इन कथनों को eval EXPR
का उपयोग कर रन-टाइम पर टेम्पलेट पार्सर द्वारा निष्पादित किया जाता है।eval के लिए तेज़ विकल्प?
यह बहुत लचीला है, लेकिन ये कथन हर जगह बिखरे हुए हैं, और लॉट निष्पादित किए गए हैं। eval EXPR
(eval BLOCK
के विपरीत) पर्ल को प्रत्येक बार दुभाषिया को आग लगाने की आवश्यकता होती है, और मेरी प्रोफाइलिंग से पता चलता है कि वे मंदी का एक महत्वपूर्ण स्रोत हैं।
एम्बेडेड पर्ल स्टेटमेंट्स में से कई बहुत ही सरल हैं।
<p>Welcome, <!--E: $user->query('name') -->.
या::
<p>Ticket number <!--E: $user->generate_ticket_number() --> has been generated.
है, वे सिर्फ वस्तु तरीकों कॉल कर रहे हैं उदाहरण के लिए, एक टेम्पलेट इस तरह एक लाइन हो सकता है। हालांकि, अधिक जटिल भी हैं।
मैं इसे अनुकूलित करने की उम्मीद कर रहा हूं, और अब तक दो विचार हैं, जिनमें से दोनों भयानक हैं। सबसे पहले USER:NAME
और USER:GENERATETICKETNUMBER
जैसे टोकन के साथ सरल कॉल को प्रतिस्थापित करने के लिए सभी टेम्पलेट्स को फिर से लिखना है, जिसे पार्सर तब स्कैन कर सकता है और उचित ऑब्जेक्ट विधि का आह्वान कर सकता है। लेकिन फिर HTML और पर्ल मिश्रण करने वाले टेम्पलेट्स से निपटने के बजाय, मेरे पास टेम्पलेट्स होंगे जो HTML, पर्ल और टोकन मिश्रण करते हैं।
दूसरा विचार एम्बेडेड पर्ल को पार्स करने का प्रयास करना है, यह बताएं कि कथन क्या करना चाहता है, और, यदि यह काफी आसान है, तो उचित ऑब्जेक्ट विधि को प्रतीकात्मक संदर्भ के माध्यम से कॉल करें। यह स्पष्ट रूप से पागल है।
क्या कुछ तार्किक समाधान है जो मैं देख रहा हूं?
+1 "यह स्पष्ट रूप से पागल है।" –