Итак, я очень новичок и неопытен в способах программирования TCL. Я написал скрипт, который вызывает proc, написанный кем-то другим, сначала удаляя выходной файл. Затем он выполняет некоторую дополнительную логику, которую я написал.
Я переместил логику во второй процесс, и сразу же он сломался (а именно команды rm).
Из того, что я могу сказать, первая программа в строке внутри центрального исполнения (текст, следующий за определениями proc) обычно выполняется без команды "exec". Однако, если вы перемещаете его внутри proc, теперь ему нужна команда "exec".
Может кто-нибудь объяснить мне, почему TCL ведет себя так?
, например
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. Возможно, в своих ответах вы можете указать, является ли это стандартом и для других переводчиков?