Inicio > Mis eListas > perl-castellano > Mensajes

 Índice de Mensajes 
 Mensajes 601 al 604 
AsuntoAutor
Re: test Marco Or
Re: test Manuel S
Re: test juan gom
programador PERL a Lore
 << 20 ant. | -- ---- >>
 
Perl en Castellano
Página principal    Mensajes | Enviar Mensaje | Ficheros | Datos | Encuestas | Eventos | Mis Preferencias

Mostrando mensaje 597     < Anterior | Siguiente >
Responder a este mensaje
Asunto:Re: [perl-castellano] test
Fecha:Martes, 17 de Marzo, 2009  18:06:04 (+0100)
Autor:Manuel Souto Pico <manuel.souto @..........net>

En efecto.

No lo comento para resolver el problema ahora porque ya no con esto, pero me podría volver a encontrar con el mismo problema en cualquier momento.

Necesitaba procesar (con matches y sustituciones) ficheros con texto en castellano, para lo cual mi script tiene cosas como
...
while (($_ =~ m/<term>(.+[ \-\/])*?([A-ZÁÉÍÓÚÜÏÑ][^A-ZÁÉÍÓÚÜÏÑ\\\/\- ]+)([\- \/].+)*?<\/term>/g) &&
...

Los problemas que tuve fueron con los delimitadores de palabra (\b), con los caracteres acentuados (que a veces me daban errores en la consola) y con palabras que no detecta (como por ejemplo, la expresión de arriba no me encontraba las cadenas "<term>Ángulo</term>" o "<term>Índice</term>" (o sea, términos de una sola palabra).

He probado usando use locale; pero el resultado no varía. También con use utf8; pero no me funciona. También he probado con quotemeta, pero luego no sé bien como desacerlo y también cambia más de lo que necesito que cambie.

Alguna sugerencia?

Saludos y gracias.

PS: La lista no estaba tan muerta ;-)

Mi script entero:

#!/usr/bin/perl

# MSP: this script searches for terms which begin with capital case and have at least some lower case characters (so that they're not acronyms) and optional space, and replaces the initial with the lower case equivalent

use strict;
use locale;
#use utf8;

my ($term, @...,lename, $fi $filename_plus_extension, $ext, $lang);
my $topo_eng = "(list|of|countries|in|English)";
my $topo_esp = "(
list|of|countries|in|Spanish)";

opendir DIR,'.' or die "open failed : $!\n";
for(readdir DIR) {
    &process($_) if /^(.*_[VALCTFRE]{3})\.(mtf|tbx)$/;           
}
closedir DIR or die "close failed : $!\n";

sub process {
    $filename_plus_extension = $_;           
    $filename = $1;                           
    $ext = $2;                               
    print "\nProcessing $filename_plus_extension...\n";
    print "======================================\n";

    open F, "$filename_plus_extension" or die $!;
    while (<F>) {
        chomp;
        # quotemeta        # s/\\(.)/$1/gs
        $_ =~ s/\(/&#040;/g;            # hiding temporarily parentheses because they conflict with variables
        $_ =~ s/\)/&#041;/g;
        $_ =~ s/\\/&#bksh;/g;            # hiding backslashes temporarily to avoid errors in the command line
        while (($_ =~ m/<term>(.+[ \-\/])*?([A-ZÁÉÍÓÚÜÏÑ][^A-ZÁÉÍÓÚÜÏÑ\\\/\- ]+)([\- \/].+)*?<\/term>/g) &&        # it doesn't match "Ángulo" o "Índice" !!!!! WHY?
        # use a while here to act globally, not an if!!
            ($2 !~ m/^$topo_eng/) && ($2 !~ m/^$topo_esp/)) {  
            $term = lcfirst $2;
            # isn't there any way to use this operator/function within the s/// ?
            print "$2 --> $term in\t $_\n";
            $_ =~ s/$2/$term/ig;           
            print "The language is $lang and the term is \"$term\"\n";
        }
        push(@..., $_);
    }
    close F;

    open G, ">${filename}_uc2lc5.$ext" or die $!;
    foreach (@...) {
        $_ =~ s/&#040;/(/g;            # restoring parentheses
        $_ =~ s/&#041;/)/g;
        $_ =~ s/&#bksh;/\\/g;         # restoring backslash
        print G "$_\n";
    }
    close G;
    @... = undef;
}



Marco Orellana O. escribió:
2009/3/17 Manuel Souto Pico &t;;manuel.souto@...-group.net>:
> Hola Marco,
>
> Gracias por tu consejo.
>
> Pero si sigo tu recomendación, ¿que expresión debería usar encontrar lo que
> normalmente encuentro con [a-záéíóúüïñ]?
>
> ¿Tendría que ser una expresión como /u\/[0-9]{5}/ (con los números que
> fuese)?
>

Que es lo que necesitas hacer??? procesar datos que llegan con "acentos"?

--
Marco A. Orellana Olivares
Sent from: Santiago Región Metropolitana Chile.




Crea tu propia Red Social de Noticias
O participa en las muchas ya creadas. ¡Es lo último, es útil y divertido! ¿A qué esperas?
es.corank.com
----------------------------------------------------------------------
Site oficial de Perl Castellano: http://www.iespana.es/perl-es
----------------------------------------------------------------------
Para obtener ayuda, visita http://www.eListas.net/lista/perl-castellano
Tu dirección de suscripción a este boletín es anuuel.souto@...-group.net
Para darte de baja, envía un mensaje a
perl-castellano-baja-manuel.souto=star-group.net@...





Crea tu propia Red Social de Noticias
O participa en las muchas ya creadas. ¡Es lo último, es útil y divertido! ¿A qué esperas?
es.corank.com