[Cascavel-pm] Comparacao de diretorios e manipulacao de arquivos.
Luis Campos de Carvalho
lechamps em terra.com.br
Sexta Fevereiro 27 12:30:35 CST 2004
Boa tentativa, Nelson.
Mas tenho quase certeza de que o problema do Leandro já foi resolvido
trilhões de vezes.
:)
Leandro, você precisa do GNU Make, o construtor de sistemas da GNU, e
de um Makefile suficientemente bom.
Acho que se você puder me oferecer informações sobre a localização
dos arquivos, e sobre o caminho em disco para seus programas, posso
fazer o Makefile que você precisa daqui. Depois, basta dizer
$ make t2t
e deixar o Make determinar quais arquivos mudaram, quais precisam ser
gerados novamente, e em quais não se precisa mexer... (:
Ah! Eu acho que o makefile anexo deve resolver seu problema, ou quase
isso. É texto ASCII, e acho que você precisa mudar algumas coisas.
Estou confiando que você usa Linux ou outro *nix, se esse não for seu
caso precisamos fazer pequenas alterações.
Não testei o script, mas deve funcionar sem maiores problemas.
Se eu puder ajudar mais, é só falar!
Putamplexos!
Nelson Ferraz wrote:
> Leandro Costa wrote:
>
>> Entao o script que preciso desenvolver:
>>
>> Seria o seguinte:
>
>
> foreach my $tt2 (@ARGV) {
> my ($html) = $tt2 =~ s/\.tt2/\.html/i;
>
> my $tt2_mtime = (stat($tt2))[9];
> my $html_mtime = (stat($html))[9];
>
>> - primeiro ele verifica se jah existe o arquivo html
>> -arquivo html existe ?
>
> if (-f $html) {
>
>> Sim - verifca a data do arquivo .t2t data maior ? "executa $
>> txt2tags -t html nomedoarquivo.t2t" - data menor nao faz nada.
>
> if ($tt2_mtime > $html_mtime) {
> system("txt2tags -t html $tt2");
> }
>
>> Nao - $ txt2tags -t html nomedoarquivo.t2t
>
> } else {
> system("txt2tags -t html $tt2");
> }
> }
>
> Para executar o script acima, você deve passar os nomes de arquivo
> através da linha de comando. Exemplo: ./script.pl *.tt2
>
> Talvez você prefira reescrever todos os ifs/elses da seguinte forma:
>
> if (!-f $html or $tt2_mtime > $html_mtime) {
> system("txt2tags -t html $tt2");
> }
>
> Em outras palavras: execute o comando se o arquivo html não existe, OU
> se a data do arquivo tt2 for maior que a do arquivo html.
>
> OBS - eu não testei nenhuma parte deste código.
>
--
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Luis Campos de Carvalho is BSc in Comp Science,
PerlMonk [SiteDocClan], Cascavel-pm Moderator,
Unix Sys Admin && Certified Oracle DBA
http://br.geocities.com/monsieur_champs/
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-------------- Próxima Parte ----------
# Makefile para resolver o problema do Leandro Costa, da lista
# dos Cascavel Perl Mongers.
#
# Por Luis 'Champs' de Carvalho, <lechamps em terra.com.br>
#
# Este programa é Open-Source, e deve ser distribuído de acordo
# com os Termos da GPL.
#
#
# Primeiro, configuracao
#
TXT2TAGS=/caminho/para/o/txt2tags
T2TARGS="-parametros -para -o -txt2tags"
HTML_DIR=/caminho/para/os/arquivos.html
HTML_EXT=".html"
T2T_DIR=/caminho/para/os/arquivos.t2t
T2T_EXT=".t2t"
FIND=/usr/bin/find
# Nao mexa daqui para baixo, por favor.
ARTIFACTS=$(shell $(FIND) $(HTML_DIR) -type f -name $(HTML_EXT) -print)
.DEFAULT: t2t
t2t: $(ARTIFACTS)
$(ARTIFACTS): %$(HTML_EXT): %$(T2T_EXT)
$(TXT2TAGS) -t html $<
# EOF
Mais detalhes sobre a lista de discussão Cascavel-pm