Las líneas que me interesan siempre comienzan por OUTPUT, en estas están las rutas de algunos archivos que deseo mover (o eliminar). Aquí dejo dos ejemplos de los archivos de registro:
- PWD /home/pablo/my_scripts/foro_perl
- INPUT /usr/local/texlive/2016/texmf.cnf
- INPUT /usr/local/texlive/2016/texmf-dist/web2c/texmf.cnf
- INPUT /usr/local/texlive/2016/texmf-var/web2c/pdftex/latex.fmt
- INPUT mytest-fig-tmp.tex
- OUTPUT mytest-fig-tmp.log
- INPUT /usr/local/texlive/2016/texmf-dist/tex/latex/base/article.cls
- INPUT /usr/local/texlive/2016/texmf-dist/tex/latex/base/article.cls
- INPUT /usr/local/texlive/2016/texmf-dist/tex/latex/filecontents/filecontents.sty
- INPUT /usr/local/texlive/2016/texmf-dist/tex/latex/filecontents/filecontents.sty
- OUTPUT mytest-fig-tmp.aux
- INPUT /usr/local/texlive/2016/texmf-dist/fonts/map/fontname/texfonts.map
- INPUT /usr/local/texlive/2016/texmf-dist/fonts/tfm/public/cm/cmtt10.tfm
- INPUT pics/content1.tex
- OUTPUT pics/content1.tex
- OUTPUT content2.tex
- OUTPUT mytest-fig-tmp.dvi
- OUTPUT joined2.tex
- INPUT mytest-fig-tmp.aux
- PWD /home/pablo/my_scripts/foro_perl
- INPUT /usr/local/texlive/2016/texmf.cnf
- INPUT /usr/local/texlive/2016/texmf-dist/web2c/texmf.cnf
- INPUT /usr/local/texlive/2016/texmf-var/web2c/pdftex/latex.fmt
- INPUT salida.tex
- OUTPUT salida.log
- INPUT /usr/local/texlive/2016/texmf-dist/tex/latex/base/article.cls
- INPUT /usr/local/texlive/2016/texmf-dist/tex/latex/base/article.cls
- INPUT /usr/local/texlive/2016/texmf-dist/tex/latex/base/size10.clo
- INPUT /usr/local/texlive/2016/texmf-dist/tex/latex/filecontents/filecontents.sty
- OUTPUT salida.aux
- INPUT /usr/local/texlive/2016/texmf-dist/fonts/map/fontname/texfonts.map
- INPUT /usr/local/texlive/2016/texmf-dist/fonts/tfm/public/cm/cmtt10.tfm
- INPUT pics/content1.tex
- OUTPUT pics/content1.tex
- INPUT content2.tex
- OUTPUT content2.tex
- OUTPUT salida.dvi
- INPUT joined2.tex
- OUTPUT joined2.tex
- INPUT salida.aux
Con el siguiente script logro lo que busco, usando array, greep y algunas operaciones puedo añadir y quitar elementos para luego moverlos, lo he probado en Linux/Windows y funciona:
Using perl Syntax Highlighting
- #!/usr/bin/env perl
- use v5.22;
- use File::Copy;
- use Data::Dumper;
- my $latex = 1 ; # modo
- my $name = 'mytest'; # nombre entrada
- my $output = 'salida' ; # nombre salida
- my $ext = '.tex'; # ext por defecto
- my $prefix = 'fig'; # prefijo
- my $tmp ='tmp'; # tmp
- my $tempDir='tmp_out'; # carpeta para guardar
- ### Quitar duplicados
- sub uniq {
- my %seen;
- grep !$seen{$_}++, @_;
- }
- ### Carpeta para guardar los archivos
- -e $tempDir or mkdir($tempDir,0744) or die "No puedo crear $tempDir: $!\n";
- # Archivos protegidos
- my @protected = qw();
- push(@protected,"$output$ext","$output.pdf");
- # Las líneas que deseo comienzan por OUTPUT
- my $flsline = "OUTPUT";
- # Añadimos el nombre del archivo .fls
- my @flsfile = "$name-$prefix-$tmp.fls";
- # Agregamos $output.fls (si es que existe)
- push(@flsfile,"$output.fls");
- # Abrimos los dos archivos y filtramos las líneas que inician con OUTPUT
- my @tmpfiles;
- for my $filename(@flsfile){
- open my $RECtmp, '<', "$filename";
- push @tmpfiles, grep /\Q$flsline/,<$RECtmp>;
- close $RECtmp;
- }
- # Quitamos lo que rodea a OUTPUT y nos quedamos con /../../file
- @tmpfiles = grep { s/$flsline\s+//mg } @tmpfiles;
- @tmpfiles = grep { s/^\s*|\s*//mg } @tmpfiles;
- # Si esta en modo latex
- if($latex){
- push (@tmpfiles,"$name-$prefix-$tmp.ps");
- }
- push(@tmpfiles,@flsfile,"$name-$prefix-$tmp$ext","$name-$prefix-$tmp.pdf");
- # Quitamos los protegidos de @tmpfiles y lo guardamos en @delfiles
- sub array_minus(\@\@) {
- my %e = map{ $_ => undef } @{$_[1]};
- return grep( ! exists( $e{$_} ), @{$_[0]} );
- }
- my @delfiles = array_minus(@tmpfiles, @protected);
- print Dumper(@delfiles);
- foreach my $tmpfile (@delfiles)
- {
- move("$tmpfile", "$tempDir");
- }
- __END__
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
Using perl Syntax Highlighting
- @tmpfiles = grep { s/$flsline\s+//mg } @tmpfiles;
- @tmpfiles = grep { s/^\s*|\s*//mg } @tmpfiles;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Agradecido de antemano.
Pablo.