Se pueden hacer un par de cosillas...
La primera y más inmediata: fíjate que en la exp. reg. usas tres paréntesis de captura, pero en realidad, solo te hacen falta dos: $1 y $2 los utilizas siempre juntos, así que te puedes ahorrar el tener que extraerlos de forma separada:
Using perl Syntax Highlighting
if ( $fich =~ /($name-src-\d+)($ext)/ ) {
system("latex $imageDir/$1$2");
system("dvips -Ppdf $tempDir/$1.dvi");
system("ps2pdf $tempDir/$1.ps");
system("pdfcrop -margins 1 $tempDir/$1.pdf $imageDir/$1.pdf");
}
Coloreado en 0.005 segundos, usando
GeSHi 1.0.8.4
Nota también que no es necesario "escapar" el '.' dentro de los literales entrecomillados dobles, porque... son literales, no son patrones de exp. reg.
Con un Perl moderno, se pueden dar nombres a las capturas, y así también no dependemos del orden en que han sido capturadas:
Using perl Syntax Highlighting
if ( $fich =~ /(?<nombre>$name-src-\d+)(?<extension>$ext)/ ) {
system("latex $imageDir/$+{nombre}$+{extension}");
system("dvips -Ppdf $tempDir/$+{nombre}.dvi");
system("ps2pdf $tempDir/$+{nombre}.ps");
system("pdfcrop -margins 1 $tempDir/$+{nombre}.pdf $imageDir/$+{nombre}.pdf");
}
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Ya solo queda agregar un poco de aire:
Using perl Syntax Highlighting
if ( $fich =~ /(?<nombre>$name-src-\d+)(?<extension>$ext)/ ) {
system("latex $imageDir/$+{nombre}$+{extension}");
system("dvips -Ppdf $tempDir/$+{nombre}.dvi");
system("ps2pdf $tempDir/$+{nombre}.ps");
system("pdfcrop -margins 1 $tempDir/$+{nombre}.pdf $imageDir/$+{nombre}.pdf");
}
Coloreado en 0.005 segundos, usando
GeSHi 1.0.8.4
En cuanto al unlink(), si estás en un entorno Bash shell, puedes hacer algo como esto y sustituir todos los comandos por uno solo:
Using perl Syntax Highlighting
unlink <$tempDir/$name-src-*.{aux,log,txt,dvi,ps,pdf}>;
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
(no es algo propio de Perl, sino de Bash).
Al final, quedaría así:
Using perl Syntax Highlighting
my $tempDir = "."; # directorio temporal
# Compilamos en forma individual cada fichero
opendir(my $DIR, $imageDir) or die "ERROR: no puedo abrir directorio $imageDir: $!\n";
while (readdir $DIR) {
if (/(?<nombre>$name-src-\d+)(?<extension>$ext)/) {
system("latex $imageDir/$+{nombre}$+{extension}");
system("dvips -Ppdf $tempDir/$+{nombre}.dvi");
system("ps2pdf $tempDir/$+{nombre}.ps");
system("pdfcrop -margins 1 $tempDir/$+{nombre}.pdf $imageDir/$+{nombre}.pdf");
}
}
closedir $DIR;
unlink <$tempDir/$name-src-*.{aux,log,txt,dvi,ps,pdf}>;
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
(Hemos quitado $fich, porque puede usarse $_, en su lugar. El código queda más corto y limpio).