• Publicidad

Búsqueda de varios índices en arreglo

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

Búsqueda de varios índices en arreglo

Notapor charlygarza » 2013-05-22 23:11 @007

Buenas. Necesito ayuda. Estoy realizando este programa. Corre bien pero no encuentro la forma de agregarle que cuando no encuentre coincidencias que me dé un texto en pantalla diciéndolo.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3. for ( $x = 1; $x <= 10; $x = $x + 1 ) {
  4.     print "ingrese el parrafo $x : ";
  5.     $tipo = <STDIN>;
  6.     chop($tipo);
  7.     my $string = $tipo;
  8.     my $char   = 'lengua';
  9.     my $offset = 0;
  10.  
  11.     my $result = index( $string, $char, $offset );
  12.  
  13.     while ( $result != -1 ) {
  14.  
  15.         print "Se encontro $char en posicion $result\n";
  16.  
  17.         $offset = $result + 1;
  18.         $result = index( $string, $char, $offset );
  19.  
  20.     }
  21.  
  22. }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Lo que quiero hacer es que encuentre esas palabras en el párrafo
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3. for ( $x = 1; $x <= 10; $x = $x + 1 ) {
  4.     print "ingrese el parrafo $x : ";
  5.     $tipo = <STDIN>;
  6.     chop($tipo);
  7.     my $string = $tipo;
  8.     my @palabra = { 'salmon', 'cala', 'don', 'de', 'gas', 'jun', 'dir', 'dua', 'hito' };
  9.  
  10.     #my $char = 'salmon' or $char = 'cala';
  11.     my $offset = 0;
  12.  
  13.     my $result = index( $string, $palabra, $offset );
  14.  
  15.     while ( $result != -1 ) {
  16.  
  17.         print "Se encontro $char en posicion $result\n";
  18.  
  19.         $offset = $result + 1;
  20.         $result = index( $string, $palabra, $offset );
  21.  
  22.     }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Última edición por explorer el 2013-05-23 04:41 @237, editado 1 vez en total
Razón: Formateado de código con Perltidy y poner marcas Perl
charlygarza
Perlero nuevo
Perlero nuevo
 
Mensajes: 26
Registrado: 2013-05-11 13:22 @598

Publicidad

Re: Búsqueda de varios índices en arreglo

Notapor explorer » 2013-05-23 06:15 @302

Había algunos errores, como la de rodear las palabras con llaves. O la de no recorrer las palabras.

Una forma de saber si no se encontró ninguna palabra es ver si $offset ha cambiado o no.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. print "Ingrese el párrafo: ";
  2. my $parrafo = readline;
  3. chomp $parrafo;
  4.  
  5. my @palabras = ( 'salmon', 'cala', 'don', 'de', 'gas', 'jun', 'dir', 'dua', 'hito' );
  6.  
  7. for my $palabra (@palabras) {
  8.     my $result;
  9.     my $offset = -1;
  10.  
  11.     while ( -1 != ($result = index($parrafo, $palabra, $offset))) {
  12.  
  13.         print "Se encontró $palabra en posición $result\n";
  14.  
  15.         $offset = $result + 1;
  16.     }
  17.  
  18.     if ($offset == -1) {
  19.         print "No se encontró $palabra\n";
  20.     }
  21. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
> ./kk.pl
Ingrese el párrafo: El salmon cala en el salmon de gas y mucho gas en la junta directiva. Todo un hito
Se encontró salmon en posición 3
Se encontró salmon en posición 21
Se encontró cala en posición 10
No se encontró don
Se encontró de en posición 28
Se encontró gas en posición 31
Se encontró gas en posición 43
Se encontró jun en posición 53
Se encontró dir en posición 59
No se encontró dua
Se encontró hito en posición 78
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
De todas maneras, tendrás problemas con las palabras que tengan alguna tilde. Debes conocer antes en qué codificación está el párrafo.
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

Re: Búsqueda de varios índices en arreglo

Notapor charlygarza » 2013-05-23 11:26 @518

Muchas gracias por tu respuesta.
charlygarza
Perlero nuevo
Perlero nuevo
 
Mensajes: 26
Registrado: 2013-05-11 13:22 @598


Volver a Básico

¿Quién está conectado?

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