好吧,我使用perl讀取包含一些常規配置數據的文件。這些數據根據他們的意思組織成標題。一個例子如下:使用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;」的一個例子,我想使用在Perl分割函數來創建包含該字符的數組「$變種「和」10「作爲要素。使用另一條線作爲一個例子:
Verbose = true;
# Should become [Verbose, true] aka no whitespace is present
這是必需的,因爲我將被輸出這些值到一個新的文件(這一條不同的C++代碼將讀取)實例字典對象。只給你的可能是什麼樣子有點味道(只是把它作爲我走):
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"];
}
要回答一個問題,爲什麼我不使用配置::簡單,就是我本來不知道我的配置文件將是什麼樣子,只是我想要它做的事。隨着我走過去 - 至少對我來說似乎是合理的 - 並用perl來解析文件。
問題是我有一些C++代碼會加載配置文件中的信息,但是因爲在C或C++中解析是:(我決定使用perl。這對我來說也是一個很好的學習練習,因爲我是新的這就是事實,這個perl代碼並不是我的應用程序的一部分,它使得C++代碼更容易讀取信息,而且它更易讀(包括配置文件和生成的文件)。感謝您的反饋,它確實幫助。
除非必要,否則請勿使用原型。即使那樣,想想三次。 http://perldoc.perl.org/perlsub.html#Prototypes *當然,這一切都非常強大,只有適度使用才能讓世界變得更美好。* – 2010-06-18 13:11:57
請看FM的回答。你真的不應該編寫自己的文件解析器來完成這樣一個常見的標準作業 - 使用CPAN,並專注於你的應用程序邏輯。 – Ether 2010-06-18 16:42:41