Так что я очень новичок и неопытен в способах программирования TCL. Я написал скрипт, который вызывает proc, написанный кем-то другим, предварительно удалив выходной файл. Затем он выполняет некоторую дополнительную логику, которую я написал.
Я переместил логику во второй процесс, и сразу куча ее сломалась (а именно команды rm).
Из того, что я могу сказать, первая программа в строке внутри центрального исполнения (текст, следующий за определениями proc) выполняется нормально без команды «exec». Однако, если вы переместите его внутрь процедуры, теперь ему нужна команда «exec».
Может ли кто-нибудь объяснить мне, почему TCL ведет себя таким образом?
e.g.
proc helloworld {} {
puts "hi"
}
#works
rm my_file
helloworld
..
proc helloworld {} {
#doesn't work
rm my_file
puts "hi"
}
helloworld
..
proc helloworld {} {
#works
eval rm my_file
puts "hi"
}
helloworld
..
proc helloworld {} {
#works
file delete my_file
puts "hi"
}
helloworld
*Обратите внимание, что это странное поведение может быть связано с программой, которую я передаю скрипту vmd, у которой есть собственное встроенное поведение TCL. Может быть, в своих ответах вы укажете, является ли это нормой и для других переводчиков?
file delete
предпочтительнееexec rm ...
- person glenn jackman   schedule 14.10.2010