변수를 정규 표현식에 전달하려고 시도하는 TCL proc이 있는데 인식하지 못합니다.TCL 인수의 변수 RE
proc _findit {RE} {
if [
regexp -all -nocase $RE $Line Match
] {
#DO STUFF
}
}
_findit \sword\s
변수를 정규 표현식에 전달하려고 시도하는 TCL proc이 있는데 인식하지 못합니다.TCL 인수의 변수 RE
proc _findit {RE} {
if [
regexp -all -nocase $RE $Line Match
] {
#DO STUFF
}
}
_findit \sword\s
도피가 _findit
의 호출이 평가 될 때 제거되므로 RE
변수의 내용은 문자열이며 "swords"
된다. 평가 인수에 대한 규칙을 포함 Tcl의 구문에 대한
_findit {\sword\s}
문서는 here를 발견 : 백 슬래시를 인용 그래서 탈출을 보존합니다 중괄호의 패턴을 둘러싸보십시오.
당신은 명령 내에서 다음 줄을 추가 무엇을 당신의 인수는 호출 할 명령의 내부처럼 알아해야하는 경우 : 후,
puts [info level 0]
이 명령 이름을 포함, 전체 인수 목록을 인쇄 호출이 평가되었습니다.
가내가 조금 그 시간에 info level
의 설명서에 의해 혼동되고 내가 쓴하는 것은 완전히 올바른 이해를 바탕으로하지 않은이 (그러나 다행히 대부분은 바로 어쨌든 나온 :
편집 info level
의 사용을 명확히). 인수없이 호출 된 경우 info level
은 현재 프로 시저 호출의 스택 수준 번호를 반환합니다. 인수 (숫자 여야 함)로 호출되면 숫자로 지정된 스택 레벨에 대한 호출 (이름 및 확장 인수)을 리턴합니다. 숫자가 0보다 큰 경우 절대 스택 수준으로 해석됩니다 (1은 최상위 수준에서 호출 한 프로 시저이고 2는 스택 수준 1에서 호출 한 프로 시저입니다). 1보다 작 으면 상대 스택 레벨로 해석됩니다 (0은이 프로 시저, -1은 호출자, -2는 호출자의 호출자 등). 따라서 [info level [info level]]
과 [info level 0]
은 (모두 [info level]
이 0이 아니더라도) 둘 다 다른 방식으로 현재 스택 수준을 나타내므로 동일한 결과를 제공합니다.
이 넘버링 방식과 유사한 0, -1, info level
0, 1, 2, 대 -2, ... up*
위해 작성되는 "상대"스택 레벨을 제외하고 upvar
uplevel
를 사용 "absolute"스택 레벨은 up*
에 대해 info level
및 # 1, # 2, # 3, ...에 대해 1, 2, 3, ...이라고 쓰여집니다 (최상위 레벨을 # 0으로 지정할 수 있음).
문서 : info
감사합니다. 이것은 정확히 내가 필요로하는 것입니다. "[info level [info level]]"제게 많은 것을 보여줍니다! – CK1
'$ Line'은 정의되지 않은 지역 변수입니다. '글로벌'이라고 선언하는 것을 잊었습니까? –