• Publicidad

Contar palabras con determinados patrones

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

Contar palabras con determinados patrones

Notapor choco » 2011-04-12 11:59 @541

Hola, necesito hacer en Perl un programita que cuente las palabras de un texto que están todas en mayúsculas (HOLA), las que están en minúsculas (hola) y las que están de las dos formas (hOlA).

No sé ni por dónde empezar. ¡Gracias a todos!
choco
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2011-04-12 11:54 @537

Publicidad

Re: Contar palabras con determinados patrones

Notapor explorer » 2011-04-12 14:59 @666

Bienvenido a los foros de Perl en español, choco.

Puedes empezar por abrir el texto, como un fichero, leer por líneas, y de cada línea, sus palabras.

Para eso, puedes consultar el perlfaq6, en la sección How do I process each word on each line?.
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: Contar palabras con determinados patrones

Notapor choco » 2011-04-13 08:59 @416

gracias, ya tomé en cuenta esa parte y leí los tutoriales de la página. Mi idea es usar expresiones regulares, algo así:
$mayus =~ s/ expresion_regular /g
pero lo que no me queda claro es ¿¿qué guardo en $mayus??
¿La cantidad de ocurrencias de la expresion_regular o qué cosa?
¡Muchas gracias!
choco
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2011-04-12 11:54 @537

Re: Contar palabras con determinados patrones

Notapor explorer » 2011-04-14 09:51 @452

El operador s/// no se usa de esa manera... Supongo que te refieres al operador m//.

La opción /g se suele usar dentro de bucles while(), ya que sirve para aplicar una búsqueda repetida. O asignar resultados como si fueran una lista de valores, a un array.

En $mayus no se guarda nada. Cuando pones $mayus =~ /patrón/ estás escribiendo una expresión regular, indicando que quieres buscar el patrón dentro de $mayus. El resultado de la expresión regular será verdadero o falso, si la ejecutas en contexto escalar. Y una lista de capturas si la ejecutas en contexto lista.

Por ejemplo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. while ($linea_del_fichero_de_texto =~ m/\b(?<palabra>[[:upper:]]+)\b/g) {
  2.     say "Palabra en mayúsculas: $+{palabra}";
  3. }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Naturalmente, para que Perl sepa que 'Ñ' es una letra mayúscula, debes configurar el programa para que esté localizado en (alguna de las variedades de) español.
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: Contar palabras con determinados patrones

Notapor juan1987 » 2011-09-23 11:08 @505

Hola, estuve intentando hacer algo parecido a lo que ustedes dicen, pero no me funciona. ¿Es posible que tenga algo que ver la versión de Perl?
juan1987
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2011-09-23 11:04 @502

Re: Contar palabras con determinados patrones

Notapor explorer » 2011-09-23 16:26 @726

Bienvenido a los foros de Perl en español, juan1987.

say() es a partir de Perl v5.10.


Para poder usarlo, debes poner, al principio.

use 5.010;

o

use feature 'say';

aunque yo prefiero usar

use Modern::Perl;

o

use common::sense;
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: Contar palabras con determinados patrones

Notapor pvaldes » 2011-09-24 06:35 @316

Tareas escolares... en fin

my $may = 0;
my $min = 0;
my $mix = 0;

para cada palabra del texto
si encuentro una palabra en mayúsculas con una regexp
$may++;
si encuentro una palabra en minúsculas con una regexp
$min++;
si encuentro una palabra con mayúsculas y minúsculas con una regexp
$mix++;
else paso a la siguiente;

y al final imprimo las variables.

explorer ya te ha resuelto el primer caso, desarrollar los otros te toca a ti; lee sobre expresiones regulares.
pvaldes
Perlero nuevo
Perlero nuevo
 
Mensajes: 129
Registrado: 2011-01-22 12:56 @580

Re: Contar palabras con determinados patrones

Notapor juan1987 » 2011-09-24 10:56 @497

Muchas gracias, explorer y pvaldes. He podido solucionar el problema gracias a sus consejos.
Un saludo.
juan1987
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2011-09-23 11:04 @502


Volver a Básico

¿Quién está conectado?

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

cron