String TCL以合理的开销获取字符串中当前元素的索引

String TCL以合理的开销获取字符串中当前元素的索引,string,tcl,String,Tcl,我将一个文件读入一个字符串,并用换行符拆分元素 if {[file exists $inputFile] == 1} { set fpI [open $inputFile r] set input [read $fpI] set lines [split $input "\n"] close $fpI } else { return "File does not exsist" } 现在,我想逐行检查整个文件,当我得到某些条件的匹配时,我想存储行#,实际

我将一个文件读入一个字符串,并用换行符拆分元素

if {[file exists $inputFile] == 1} {
    set fpI [open $inputFile r]
    set input [read $fpI]
    set lines [split $input "\n"]
    close $fpI
} else {
    return "File does not exsist"
}

现在,我想逐行检查整个文件,当我得到某些条件的匹配时,我想存储行#,实际上,它是$lines字符串中的元素号。如何在不使用额外变量和不每次运行搜索的情况下获取行号(高开销)?

到目前为止,最简单的机制是保留自己的行号计数器。尽管
foreach
确实有一个内部索引计数器,但它根本不向脚本公开

set lineNumber 0
foreach line $lines {
    incr lineNumber
    # ...
}
set lineNumber 0
foreach line $lines {
    incr lineNumber
    # ...
}