हो सकता है ठीक है, इसलिए मैं कुछ सामान्य कॉन्फ़िगरेशन डेटा वाले फ़ाइल में पढ़ने के लिए perl का उपयोग कर रहा हूं। यह डेटा हेडर में व्यवस्थित होता है जिसका अर्थ है कि उनका क्या मतलब है। एक उदाहरण इस प्रकार है:एक लाइन को विभाजित करने के लिए पर्ल का उपयोग करना जिसमें व्हाइटस्पेस
[vars]
# This is how we define a variable!
$var = 10;
$str = "Hello thar!";
# This section contains flags which can be used to modify module behavior
# All modules read this file and if they understand any of the flags, use them
[flags]
Verbose = true; # Notice the errant whitespace!
[path]
WinPath = default; # Keyword which loads the standard PATH as defined by the operating system. Append with additonal values.
LinuxPath = default;
लक्ष्य: एक उदाहरण "$ var = 10;" के रूप में पहली पंक्ति का उपयोग करना, मैं एक सरणी है कि वर्ण हैं बनाने के लिए पर्ल में विभाजित समारोह का उपयोग करना चाहते "$ वर "और" 10 "तत्वों के रूप में। एक उदाहरण के रूप में एक और लाइन का उपयोग करना:
Verbose = true;
# Should become [Verbose, true] aka no whitespace is present
यह इसलिए आवश्यक है क्योंकि मैं एक नई फ़ाइल में इन मूल्यों को (जो सी ++ कोड का एक अलग टुकड़ा पढ़ा जाएगा) वस्तुओं शब्दकोश का दृष्टांत के लिए outputting कर दिया जाएगा। बस (के रूप में मैं साथ जाने बस इसे बनाने तक) आप यह कैसा लग सकता है एक छोटा सा स्वाद देने के लिए:
define new dictionary name: [flags] # Start defining keys => values new key name: Verbose new value val: 10 # End dictionary
ओह, और यहाँ है कोड मैं वर्तमान में यह क्या कर रहा है (गलत) के साथ है :
sub makeref($)
{
my @line = (split (/=/)); # Produces ["Verbose", " true"];
}
, एक सवाल का जवाब देने कारण है कि मैं कॉन्फ़िग :: सरल उपयोग नहीं कर रहा है कि मैं मूल रूप से क्या मेरी विन्यास फाइल कैसा दिखेगा पता नहीं था, केवल क्या मैं इसे करना चाहता था है। जैसे ही मैं साथ गया, इसे कम करना - कम से कम मुझे क्या समझ में आया - और फाइल को पार्स करने के लिए पर्ल का उपयोग करना।
समस्या मैं कुछ सी ++ कोड कि कॉन्फ़िग फ़ाइल में जानकारी लोड होगा है, लेकिन C++ या सी में पार्स करने है :(मैं पर्ल उपयोग करने का फैसला के बाद से। यह भी मेरे लिए एक अच्छा सीखने व्यायाम है, क्योंकि मैं नया हूँ है भाषा के लिए। तो यह बात है, यह पर्ल कोड वास्तव में मेरे एप्लिकेशन से अलग नहीं है, यह सी ++ कोड को जानकारी पढ़ने के लिए आसान बनाता है। और, यह अधिक पठनीय है (कॉन्फ़िगरेशन फ़ाइल और जेनरेट की गई फाइल दोनों)। प्रतिक्रिया के लिए धन्यवाद, यह वास्तव में मदद की।
प्रोटोटाइप का उपयोग न करें जब तक वे आवश्यक न हों। फिर भी, तीन बार सोचो। http://perldoc.perl.org/perlsub.html#Prototypes * यह सब बहुत शक्तिशाली है, और दुनिया को बेहतर स्थान बनाने के लिए केवल मॉडरेशन में ही उपयोग किया जाना चाहिए। * –
कृपया एफएम का जवाब देखें। आपको वास्तव में ऐसी सामान्य और मानक नौकरी करने के लिए अपना स्वयं का फ़ाइल पार्सर नहीं लिखना चाहिए - सीपीएएन का उपयोग करें, और अपने एप्लिकेशन तर्क पर ध्यान केंद्रित करें। – Ether