• Publicidad

Modificar ficheros desde la línea de comandos

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Modificar ficheros desde la línea de comandos

Notapor ana gonzález ledesma » 2009-02-13 06:35 @316

Hola, buenas.

Tengo un problema para cuya solución no tengo suficientes conocimientos en Perl y, por tanto, no sé si se puede resolver o no.

Bien, tengo un conjunto de textos, donde algunas palabras están etiquetadas con sus categorías. Por ejemplo, la palabra fruta, está etiquetada como <Nombre>fruta<\Nombre>. El problema es que, como todos sabemos, hay palabras que tienen más de una categoría gramatical. Como por ejemplo, la palabra "como". La cual, en concreto, tiene tres análisis: verbo (primera persona del verbo comer), conjunción causal (como no vengas, te vas a enterar) y conjunción comparativa (quiero ser como tú).

Bien. En este momento, la palabra "como" ha sido etiquetada automáticamente de acuerdo con unas reglas. Y ahora me falta ir corrigiendo uno a uno todas las apariciones de "como" en los textos para ver si efectivamente las reglas automáticas de desambiguación semántica han funcionado.

Lógicamente, a mí me gustaría que esta tarea fuera lo más rápida, eficiente y automática posible. Para lo cual he pensado lo siguiente, y me gustaría que alguno de vosotros/as, si os pica la curiosidad, me dijerais si efectivamente esto es posible de hacer en Perl. Este es el algoritmo de mi programa:

-recorre lista de palabras ambiguas (texto previamente metido en un array)
-abre un directorio (conjunto de textos a corregir)
-primer archivo
-busca la primera ocurrencia de la palabra "como"
-saca la línea por pantalla (no con print(), sino con cualquier otra operación que haga que la línea sea susceptible de ser modificada en pantalla)
-la modifico en el caso de que lo requiera
-sustituye la línea sacada por pantalla (o no) con la que está en el archivo (¿con <stdin> y luego s/$linea/$nuevalinea/;?)
-pásame a la siguiente linea en la que se encuentra la segunda ocurrencia de la palabra "como"
-lo mismo
-cuando se termine el archivo:
mete el archivo corregido en un directorio: directorio_corregidos.
print() "el archivo ha terminado, ¿quieres empezar otro?"

-Si sí, abre otro archivo
-Si no, cierra, y Fin.

Con lo que tengo problemas es con la operación de modificar y actualizar los datos. ¿Esto es posible? En el caso de que no lo sea, ¿se os ocurre otra manera de hacerlo con las herramientas disponibles en Perl?

Muchas gracias, como siempre, al menos por la paciencia de leerme.

-ana
-
ana gonzález ledesma
Perlero nuevo
Perlero nuevo
 
Mensajes: 17
Registrado: 2006-11-02 10:25 @475

Publicidad

Notapor explorer » 2009-02-13 07:21 @348

Para modificar un fichero de esa manera, intentaría primero leerlo entero en memoria, haría los cambios, y luego lo grabaría (si es que hubo cambios).

En cuanto a la edición línea a línea, hay varios módulos en CPAN y en la distribución Perl que se encargan de estas cosas. Debes buscar por "Readline". Por ejemplo, Term::ReadLine viene incluido. Term::UI es más elaborado, porque permite hacer preguntas y dar opciones al usuario, etc., etc.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor ana gonzález ledesma » 2009-02-13 18:01 @792

Ok, gracias, intentaré ver cómo funcionan estos módulos y cómo integrarlo dentro de la dinámica del programa.
ana gonzález ledesma
Perlero nuevo
Perlero nuevo
 
Mensajes: 17
Registrado: 2006-11-02 10:25 @475


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 26 invitados

cron