重定向;“帕雷”;输出到tcl中的文件
我在tcl中有一个数组。 例如:重定向;“帕雷”;输出到tcl中的文件,tcl,Tcl,我在tcl中有一个数组。 例如: set a(1) "First element" set a(2) "second element" parray a 阵列a将输出显示为 a(1) = "First element" a(2) = "second element" a(1)=“第一元素” a(2)=“第二元素” 是否可以将parray输出重定向到文件?无法重定向parray命令。这是一个简单的程序,太愚蠢了,无法重定向。但它不是很长;事实上,它很短,我只想将它粘贴到这里(它在Tcl许可
set a(1) "First element"
set a(2) "second element"
parray a
阵列a
将输出显示为
a(1) = "First element"
a(2) = "second element"
a(1)=“第一元素”
a(2)=“第二元素”
是否可以将
parray
输出重定向到文件?无法重定向parray
命令。这是一个简单的程序,太愚蠢了,无法重定向。但它不是很长;事实上,它很短,我只想将它粘贴到这里(它在Tcl许可证下):
重定向它(提示:对于从
open…a
获取的内容,更改stdout
,并且不要忘记之后关闭它)应该是一个简单的练习。您可以使用rename
命令覆盖parray
,添加您自己的想法。执行info body parray
。您现在有了parray
代码,可以玩了。或者,您可以覆盖put
本身。(因为parray
使用put
在控制台上打印)我不明白。你能举个例子吗?如果你想在tcl外壳上看到源代码:auto_load parray;信息参数帕雷;信息主体阵列
proc parray {a {pattern *}} {
upvar 1 $a array
if {![array exists array]} {
return -code error "\"$a\" isn't an array"
}
set maxl 0
set names [lsort [array names array $pattern]]
foreach name $names {
if {[string length $name] > $maxl} {
set maxl [string length $name]
}
}
set maxl [expr {$maxl + [string length $a] + 2}]
foreach name $names {
set nameString [format %s(%s) $a $name]
puts stdout [format "%-*s = %s" $maxl $nameString $array($name)]
}
}