- Rodar em Windows;
- Ser um executável sem dependências externas (principalmente, não depender de uma VM);
- Alterar o valor da coluna 114 para 4 em todas as linhas;
- Gravar uma cópia do arquivo original.
Pareceu-me uma boa oportunidade de usar o Tcl. Desta vez, sem o Tk. Com o Freewrap, posso rapidamente criar um executável.
O script abaixo mostra como é simples a tarefa com Tcl, mas é o Freewrap que torna a aplicação da linguagem interessante no Windows.
if {$argc<1} {
puts "Uso: setcol arquivo";
exit
}
set filename [lindex $argv 0]
proc replace {filename} {
set in [open $filename]
set out [open "$filename.temp" w]
while {[gets $in line] >= 0} {
puts $out [string replace $line 113 113 4]
}
close $in
close $out
file delete "$filename.bak"
file rename $filename "$filename.bak"
file rename "$filename.temp" $filename
}
if [catch {replace $filename} result] {
puts stderr "Cuidado: $result"
exit
}
A força do Freewrap para este tipo de problema (uma solução para uma máquina remota com poucos recursos de software) é que ele permite agregar binários adicionais ao pacote. Então, posso enviar um script e vários binários acessórios sem nenhum esforço. Posso também criar uma interface gráfica com Tk para facilitar o uso de algum binário por um operador leigo. E o resultado vai rodar em qualquer versão do Windows (talvez não no Windows 3.11, mas, sem testar, não é possível excluir a possibilidade).
Este cenário é dos mais simples e gerar o executável é uma questão apenas de digitar o seguinte comando:
freewrapTCLSH setcol.tcl
Isso produz um arquivo chamado setcol.exe com aproximadamente 2,3MB. Essa versão do freewrap não inclui o Tk. Com ele, o executável teria mais de 4MB.