source — 파일이나 리소스를 Tcl 스크립트로 평가하기

source — 파일이나 리소스를 Tcl 스크립트로 평가하기

Tcl에서는 코드를 직접 입력하는 것보다 파일로 만들어 두고 실행하는 경우가 많아요. source는 그런 파일의 내용을 통째로 읽어서 Tcl 인터프리터에 텍스트 스크립트로 넘겨주는 명령이에요. 파일뿐 아니라 리소스도 대상으로 할 수 있어요.

출처: Tcl 공식 문서 - source

본문

source는 지정한 파일(또는 리소스)의 내용을 읽어 Tcl 인터프리터에 텍스트 스크립트로 넘겨줘요.

source fileName

source -encoding encodingName fileName

source가 돌려주는 값은 스크립트에서 실행된 마지막 명령의 반환 값이에요. 스크립트를 평가하는 도중 오류가 나면 source도 그 오류를 그대로 반환하고요. 스크립트 안에서 return을 호출하면 파일의 나머지 부분은 건너뛰고, sourcereturn의 결과를 받아 정상적으로 반환하며 끝나요.

파일의 EOF(파일 끝) 문자는 모든 플랫폼에서 "\32"(^Z)예요. source는 이 문자가 나올 때까지 파일을 읽는데, readgets 명령에는 이 제한이 없어요. 그래서 코드와 데이터 구간을 함께 담은 '스크립트 문서' 같은 파일을 만들 수 있죠. 만약 문자열 비교를 위해 코드 안에 진짜 ^Z가 필요하다면 "\032""\u001a"를 쓰면 돼요. Tcl 인터프리터가 이를 안전하게 ^Z로 치환해 줘요.

유니코드 인코딩(utf-8, unicode)에서는 파일 앞부분의 BOM(바이트 오더 마크)을 무시해요.

-encoding 옵션은 fileName에 저장된 데이터의 인코딩을 지정할 때 써요. 이 옵션을 생략하면 시스템 인코딩을 가정해요.

예제

foo.tcl 파일의 스크립트를 실행하고, 이어서 bar.tcl을 실행해 볼게요.

source foo.tcl
source bar.tcl

아니면 이렇게도 할 수 있어요.

foreach scriptFile {foo.tcl bar.tcl} {
    source $scriptFile
}

더 알아보기

  • file — 파일 이름 다루기
  • encoding — 인코딩 변환