一种文本格式的配置文件格式
name1 : name_1 value
name2 : name_2 value 1
:: name_2 value 2
:: name_2 value 3
name1 :: name1 value 2
p3.n4.k5: name_3 value
用Tcl读取的方法
proc read_cfg {varname {file "app.cfg"} {append 0}} {
upvar $varname prscfg
if {!$append} {array unset prscfg}
set fp [open $file]
set last_k "-"
while {[gets $fp line] >= 0} {
if [regexp {^[ \t]*#|^[ \t]*$} $line] continue ;# skip empty line and comment line
if ![regexp {^\s*([\w\.\-\_]*)(::?)(.*)} $line m k sp v] continue
set k [string trim $k] ;# remove the space of the string $k
if {$k == ""} {set k $last_k}
set last_k $k
if {$sp==":"} {
array set prscfg [list $k [string trim $v]]
} else {
if [info exists prscfg($k)] {
array set prscfg [list $k [string trim [join [list $prscfg($k) $v] "\n"]]]
} else {
array set prscfg [list $k [string trim $v]]
}
}
}
close $fp
return
}
#----------------------------------------------------
# Usage:
#----------------------------------------------------
read_cfg appcfg
array set cfg [list k1 v1 k2 v2]
read_cfg cfg "file.cfg" 1
puts $cfg(k1)