space 的 TCL 输出

TCL output with space

我有 5 个不同的变量来自不同的 if 和循环语句,当我使用 "put" 将输出输出到文本文件时,所有字符和数字都是这样的:alphaclass112098voip。其中

variables: name = alpha

category = class1

number = 12098

service = voip

我希望文件中的输出像这样,同一行有空格。

Alpha class1 12098 voip

Beta class1 12093 DHCP SIP

另外在某些时候我想通过分隔符以备将来使用。

处理这个问题的最简单方法是构造一个表示记录的 Tcl 列表。您可以使用 lappend 零碎地执行此操作,也可以使用 list 一次完成此操作。或者混合使用。

foreach name $names category $categories number $numbers service $services {
    set record [list $name $category]
    lappend record $number
    lappend record $service
    puts $record
}

这以 Tcl 认为易于解析的格式显示每一行的记录(如果您的名称中包含 space,您就会明白我的意思)。要使用分隔符来分隔值,join 命令非常有用:

    puts [join $record $delimiter]

默认分隔符是 space,但请尝试使用 : 以查看其工作原理。


如果您要生成 CSV 文件,请使用 Tcllib 中的 csv package。它为您处理棘手的边缘情况(例如,嵌入的逗号)。