2013-04-03 7 views
6

पर्ल में मैं की तरह कुछ कर सकते हैं निम्नलिखित:स्ट्रिंग प्रक्षेप

Home: /home 
Alice: $Home/alice 

तो "ऐलिस" प्रभावी रूप से /home/alice में है:

my $home = "/home"; 
my $alice = "$home/alice"; 

मैं YAML में निम्नलिखित की तरह कुछ भी कर सकते हैं समाप्त?

+1

** यह भी देखें: ** * https://stackoverflow.com/questions/15777987/ * https://stackoverflow.com/questions/13055753/ * https : //stackoverflow.com/questions/41620674/ * https://stackoverflow.com/questions/4150782/ – dreftymac

+0

** यह भी देखें: ** https://stackoverflow.com/a/41620747/42223 – dreftymac

उत्तर

4

दुर्भाग्य से, आप भाग्य से बाहर हैं।

Alice: ! '%{home}/Alice' 

करने के लिए विस्तृत जवाब के लिए this StackOverflow Q&A देखें: क्या आप आप अपने YAML प्रविष्टि में यह अंतर्वेशन, संभवतः की तरह कुछ दिखाई दे सकता है जो एक दृश्य फ़ाइल (या जहाँ भी) से $home में पारित करने के लिए की जरूरत है और चाहते हैं चाहते हैं ऐसा करने के लिए वास्तव में आपका सवाल बहुत ज्यादा है।

1

मैं YAML::AppConfig का उपयोग कर समाप्त हुआ लेकिन स्वीकार्य रूप से यह एक वाईएएमएल समाधान नहीं बल्कि एक पर्ल विशिष्ट समाधान है। यह वाईएएमएल को $var एस शामिल करने की अनुमति देता है जो इंटरपोलेटेड हैं।

+1

+1 के लिए नया, दिलचस्प ज्ञान। यदि मैं एक पर्ल प्रोजेक्ट करता हूं तो मैं इस लाइब्रेरी का उपयोग करने पर विचार करूंगा। –

6

आपको ईआरबी टेम्पलेट का उपयोग करना चाहिए।

आप निम्नलिखित की तरह लिख सकते हैं:

Alice: <%=home%>/alice 

जब उपयोग करते हैं, आप YAML के रूप में पार्स से पहले ERB साथ home मान पार्स की जरूरत है। यदि घर स्थानीय चर है, तो आपको स्थानीय बाध्यकारी को #result विधि के तर्क के रूप में पास करने की आवश्यकता है। यदि आप इसे पास नहीं करते हैं, तो डिफ़ॉल्ट रूप से शीर्ष स्तर बाध्यकारी का उपयोग करेंगे।

इस तरह

:

require 'erb' 

home = 'home' 
YAML.load(ERB.new(yaml_content).result(binding)) 
संबंधित मुद्दे