Bueno, para ayudar un poco con mi duda que ahora me queda creo que debo hacer lo siguiente para que no exista duda.
Using text Syntax Highlighting
este es el archivo directorio:
texto.dat,texto2.dat,texto3.dat
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
Este es el diccionario:
Using text Syntax Highlighting
raiz,sqrt
div,frac
expo,^
izquierda,left
derecha,right
suma,sum_
infinito,infty
matematico,mathrm
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
Y este es el código con las modificaciones que me recomendaste:
Using perl Syntax Highlighting
#print "Introduzca el nombre del directorio\n"; #se introduce el listado de archivos a abrir.
$direccion ="directorio.dat";
open (DIRECTORIO
,"<$direccion"); #se abre el archivo con el listado de los archivos a traducir
while (<DIRECTORIO>){ #ciclo para separar el nombre de los archivos
chomp;
@e=split q[,];
}
close (DIRECTORIO
);
$dic = "diccionario.dat"; # diccionario normal->latex
open(DIC
,"$dic"); # se abre diccionario
while (<DIC>) { # ciclo para separar las variables del diccionario
chomp;
($b,$s) = split q[,];
$dicc{$b} = $s; # lo guardamos en un hash
}
close (DIC
);
for $archivo (@e) { #llamo al programa tantas veces como archivos tenga
&traduce($archivo);
}
sub traduce
{ # se inicia la subrutina
open(ARCHIVO
,"<$archivo"); # se abre el archivo a traducir
while (<ARCHIVO>) {
$count++ ; # contador de las líneas del archivo
push @archivo, $_; # se guarda en el array del archivo
}
close(ARCHVIVO
);
print "\nEl archivo tiene $count líneas\n";
$n_linea = 1; # número de línea
for $linea (@archivo) {
$cambios = 0;
for $b (keys %dicc) { # para todas las claves del diccionario
$cambios += $linea =~ s/$b/$dicc{$b}/g; # hacemos la traducción y llevamos la cuenta
}
open(SALIDA
,">>salida.dat");
print SALIDA
"Línea $n_linea con $cambios cambios\n";
$n_linea++;
close(SALIDA
);
}
print "\n@archivo\n"; # imprime el archivo traducido
} #se termina la subrutina
Coloreado en 0.003 segundos, usando
GeSHi 1.0.8.4
Ahora en los archivos texto, ahora si este sería más o menos un ejemplo:
Using text Syntax Highlighting
\[ \ div{xexpo2}{xexpo2 + yexpo2} + \ div12 +
\div1{1 + \ raiz{ \div{21}3 } \]
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
Indistinto en cualquier archivo de los nombrados textos.
Bueno he aquí mi pregunta ahora sí muy concreta, ya lo corre el programa y hace para el primer archivo la traducción como se supone que la debe hacer, pero al momento de abrir el segundo archivo y correrlo para traducirlo, guarda los cambios del primero y le suma lo que este en el archivo2, es decir si en el primer archivo tenía 2 líneas, al volver a correr el programa me pone esas dos líneas más las que ya tiene este archivo, y pues ya no hace las traducciones pertinentes, no sé que tenga de mal en mi sintaxis, y de antemano muchas gracias por la ayuda. No saben cuánto les agradezco el tiempo que se toman para ayudarme.