Tcl/Tk tem propriedades camaleônicas. Praticamente tudo pode ser modificado, o que pode resultar na criação de uma linguagem quase inteiramente nova. Por exemplo, se você não gostar do comando nativo [puts] porque está muito acostumado com ‘echo’, pode mudar o nome do comando:
% puts "Alô, mamãe!" Alô, mamãe! % rename puts echo % puts "Alô, mamãe!" invalid command name "puts" % echo "Alô, mamãe!" Alô, mamãe!
Se o segundo argumento de [rename] for a string vazia em vez de um nome novo para o comando a ser renomeado, o comando é apagado!
% rename echo {}
% echo "Alô, mamãe!"
invalid command name "echo"
Você pode querer “matar” alguns comandos em programas/scripts que aceitem dados digitados pelo usuário. Sem determinados comandos, o programa fica mais seguro.







5 comentários
Feed de comentários deste artigo
30 março 2009 às 9:02
Tcl/Tk: Criar vários nomes para um comando (alias) « CODARE
[...] Tags: alias, apelido, comando, file exists, foreach, interp alias, Tcl/Tk | by Aurélio Além de renomear comandos no Tcl/Tk, também é possível criar “apelidos” para os comandos com o [interp alias]. Por [...]
31 março 2009 às 8:49
Tiago Madeira
Nossa… Realmente camaleônicas.
Interessante, me deu vontade de aprender a programar nisso, vou continuar lendo os posts dessa série…
Já deste ponto eu discordo. Não se deve tirar a liberdade do usuário, já que ele roda um programa por sua conta e risco em sua própria máquina.
2 abril 2009 às 20:23
LES
Oi, Tiago. Só vi hoje o seu comentário. Preciso consultar o Aurélio sobre como receber avisos quando alguém comentar.
A liberdade de um mero usuário é diferente da liberdade do autor ou administrador. Se o tal “usuário” for autor ou administrador do programa e tiver acesso ao código, ele põe e tira o que quiser.
Eu me referia a situações em que o usuário só usa o programa, não tem acesso ao código. Por exemplo, um formulário de site que use Tcl como linguagem CGI. Imagine que o usuário preencha “[exec rm -rf ./]” em um dos campos e aperte o botão Enviar. Se você já programa, deve ter uma boa idéia do que faz o comando [exec] e de quanto estrago ele pode fazer. Se você apagar o comando [exec], pelo menos este perigo é evitado. Existem inúmeras maneiras de validar o que é digitado pelo usuário, e UMA delas é castrar a linguagem.
Na verdade, isso tudo foi só um exemplo muito simplificado moldado para o escopo ultra resumido do Codare. A maneira mais certa de se castrar a linguagem é usando *interpretadores seguros*. Resumindo: todas as outras linguagens que eu conheço têm um interpretador só executando o script inteiro, mas Tcl permite criar vários interpretadores paralelos, cada um deles completamente isolado e independente e com características próprias. É como ter várias Tcl dentro da Tcl, cada uma diferente se você quiser. Você pode criar um interpretador “capado” só para determinadas tarefas se achar melhor. É um modelo de segurança muito interessante. Se você quiser saber mais, vai ter que pesquisar. :-) Comece procurando por [interp create -safe].
9 abril 2009 às 10:54
Tcl/Tk: Expressões aritméticas sem “expr” « CODARE
[...] Antes, é mais prudente reservar o comando [unknown] original dando-lhe outro nome: [...]
8 junho 2009 às 9:03
Tcl/Tk: Introspecção com comando info « CODARE
[...] [info commands]: retorna os nomes de todos os comandos existentes no programa, inclusive os procs. Também inclui os “apelidos“. Isso inclui TODOS os comandos da linguagem Tcl/Tk, mas observe que alguns comandos podem ter sido apagados. [...]