• Publicidad

Eliminar repeticiones

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

Eliminar repeticiones

Notapor crodriguez » 2012-12-29 20:26 @893

Buenas, soy nuevo en esto de Perl y quisiera pedirles ayuda para que me aconsejen cómo podría hacer para llenar un array en Perl y después trasladar ese array a una base de datos pero sin contar los repetidos. El array lo quiero llenar con una lista de nombres que está en texto en forma vertical, ejemplo:

carlos
eduardo
maria
pepe
lucho
carlos
jose
lucia
maria
maria

Es algo así.

Agradecería que me pudieran dar una ayuda con este tema, muchas gracias.
crodriguez
Perlero nuevo
Perlero nuevo
 
Mensajes: 17
Registrado: 2012-12-29 20:19 @888
Ubicación: Peru

Publicidad

Re: Eliminar repeticiones

Notapor explorer » 2012-12-29 21:25 @934

Bienvenido a los foros de Perl en Español, crodriguez.

El problema se puede resolver de muchas formas. Una de ellas puede ser esta:

Abres el archivo con open(). Vas leyendo línea a línea con while(). Por cada línea, metes el nombre leído en una entrada hash, con un valor cualquiera (por ejemplo, 1). Después de leer todas las líneas, en el hash tendrás los nombres únicos. Solo te queda grabarlos en la base de datos.

Por estos foros hay docenas de ejemplos así. La última, hace cinco días.

Inténtalo. Por aquí estaremos para echarte una mano.

Recuerda visitar la sección de Tutoriales (en el menú de la parte de arriba).
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Eliminar repeticiones

Notapor crodriguez » 2012-12-30 00:14 @051

Disculpa, si no fuese mucha molestia, ¿podrías decirme qué es lo que estoy haciendo mal acá?

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3. open(archivo,"/root/logs/ns5/named-queries.log.1") or die "ERROR: No puedo abrir archivo: $!\n";
  4.  
  5. archivo=cat /root/logs/ns5/named-queries.log.1 | \;
  6. archivo=tr 'A-Z' 'a-z' | \;
  7. archivo=grep ' in a ' | \;
  8. archivo=grep '\.pe ' | \;
  9. archivo=sed 's/.*query: //' | \;
  10. archivo=sed 's/\.pe.*$/\.pe/g' | \;
  11. archivo=sort | \;
  12. archivo=uniq \;
  13.  
  14. @a = <archivo>;
  15. chomp(@a);
  16. foreach $linea(@a)
  17. {
  18. print "$linea\n";
  19. }
  20. close(archivo);
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


y otra cosa como despues de hacer todo eso podria generar un nuevo archivo con la lista obtenida.
muchas gracias por la ayuda y feliz año nuevo
Última edición por explorer el 2012-12-30 08:28 @395, editado 1 vez en total
Razón: Marcas de código Perl
crodriguez
Perlero nuevo
Perlero nuevo
 
Mensajes: 17
Registrado: 2012-12-29 20:19 @888
Ubicación: Peru

Re: Eliminar repeticiones

Notapor explorer » 2012-12-30 08:47 @407

Pues... básicamente... porque eso que has escrito, en su mayor parte, no es lenguaje Perl.

¿Qué textos estás usando para aprender Perl? ¿Lo estás haciendo por tu cuenta o estás recibiendo clases?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Eliminar repeticiones

Notapor crodriguez » 2012-12-30 11:38 @526

Bueno, yo estoy aprendiendo por mi cuenta y la verdad es que es la primera vez que uso Perl. En sí todo esto lo estoy trabando en Linux remotamente y mis scripts los hago en Windows mediante el block de notas y con Winscp lo paso al servidor de Linux que tiene instalado Perl.

Bueno, ¿qué me recomiendas que haga??
De antemano muchas gracias por tu tiempo.
crodriguez
Perlero nuevo
Perlero nuevo
 
Mensajes: 17
Registrado: 2012-12-29 20:19 @888
Ubicación: Peru

Re: Eliminar repeticiones

Notapor explorer » 2012-12-30 13:29 @603

En los tutoriales (menú de la parte superior) tienes algún ejemplo de cómo abrir archivos. Por estos foros hay un montón de ejemplos, también: Empezar desde cero.

Si tienes problemas con el inglés, puedes ir al proyecto POD2::ES y leer parte de la documentación Perl traducida al español. perlintro es una muy buena introducción al lenguaje. Allí se comenta cómo abrir archivos, también. Y lo que significan los hash, que deberás usar en tu problema.

No entiendo porqué trabajas primero en local y luego transfieres los programas al Linux. Puedes trabajar directamente en Linux, conectándote por SSH. Tendrás que ver qué editores de texto tienes disponible en ese Linux, pero por lo demás, todo lo puedes hacer allí.

Otra opción es trabajar siempre en Windows. Te recomiendo que uses la distribución ActivePerl de la empresa ActiveState.

Una forma de resolverlo sería así (no probado):
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use v5.14;
  3. use autodie;
  4.  
  5. open my $ARCHIVO, '<', '/root/logs/ns5/named-queries.log.1';
  6.  
  7. my %nombres;
  8.  
  9. while (my $nombre = <$ARCHIVO>) {     # mientras no lleguemos al fin del archivo, leemos una línea del $ARCHIVO
  10.     chomp $nombre;                    # le quitamos el/los carácter de fin de línea
  11.     $nombres{$nombre} = 1;            # guardamos el nombre leído en el hash
  12. }
  13.  
  14. close $ARCHIVO;
  15.  
  16. for my $nombre (keys %nombres) {      # recorremos los nombres almacenados
  17.     say $nombre;                      # los sacamos a pantalla
  18. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Eliminar repeticiones

Notapor crodriguez » 2013-01-01 16:35 @733

Muchas gracias por la ayuda. Ahora me pondré a estudiarlo más a fondo.
Si me funciona se los publico :D Gracias nuevamente.
crodriguez
Perlero nuevo
Perlero nuevo
 
Mensajes: 17
Registrado: 2012-12-29 20:19 @888
Ubicación: Peru


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron