Tuesday, June 12, 2012

TCL - Modularization - source


The source command will load a file and execute it. This allows a program to be broken up into multiple files, with each file defining procedures and variables for a particular area of functionality. For instance, you might have a file called database.tcl that contains all the procedures for dealing with a database, or a file called gui.tcl that handles creating a graphical user interface with Tk. The main script can then simply include each file using the sourcecommand. More powerful techniques for program modularization are discussed in the next lesson on packages.
This command can be used to:
  • separate a program into multiple files.
  • make a library file that contains all the procs for a particular set of functions.
  • configure programs.
  • load data files.
source fileName
Reads the script in fileName and executes it. If the script executes successfully, source returns the value of the last statement in the script.
If there is an error in the script, source will return that error.
If there is a return (other than within a proc definition) then source will return immediately, without executing the remainder of the script.
If fileName starts with a tilde (~) then $env(HOME) will substituted for the tilde, as is done in the file command.

Example

sourcedata.tcl:
# Example data file to be sourced
set scr [info script]
global scr pu
proc testproc {} { ts "testproc source file: $scr" }
set abc 1 return
set aaaa 1
sourcemain.tcl:
set filename "sourcedata.tcl"
puts "Global variables visible before sourcing $filename:"
puts "[lsort [info globals]]\n"
{ puts "testproc does not exis
if {[info procs testproc] eq ""} t. sourcing $filename" source $filename }
lobal variables visible after s
puts "\nNow executing testproc" testproc puts " Gourcing $filename:"
obals]]\n"
puts "[lsort [info g l

No comments:

Post a Comment

Popular Posts