• Publicidad

Contar las veces en que aparece un símbolo

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

Contar las veces en que aparece un símbolo

Notapor Skull118 » 2013-07-19 16:37 @734

Compañeros, primero que nada les deseo éxitos en su vida cotidiana. Seguido de mi corto pero caluroso saludo, pasaré a exponerles mi problema para verificar si me pueden entregar una solución. De antemano, ¡¡¡MUCHAS GRACIAS!!!

Tengo un archivo de varias líneas que, conforme a un bucle, voy ingresándolo en una variable:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $string="aquí un valor= aquí otro valor"
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

Lo que me ha estado dando un poco de problema es que a veces viene la línea así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $string="aquí un valor = aquí otro valor} aquí un valor= aquí otro valor}"
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Necesitaría poner una nueva línea antes de donde dice por segunda vez "aquí un valor", o bien en este caso, el signo "=" es el que se repite, mas sin embargo no he encontrado la forma adecuada para verificar si el símbolo ("=") aparece dos veces, el símbolo "}" aparece N cantidad de veces, por tanto no representa un problema por el momento.

Mi pregunta es, ¿existe en este fabuloso programa llamado Perl, que permita contar cuántas veces aparece un carácter ( "=" en este caso), para luego idear la forma de verificar dónde inicia la línea que debería de ir abajo?

Gracias de antemano.
Skull118
Perlero nuevo
Perlero nuevo
 
Mensajes: 53
Registrado: 2013-03-21 13:38 @610

Publicidad

Re: Contar las veces en que aparece un símbolo

Notapor explorer » 2013-07-19 16:47 @741

¿El archivo de entrada está en un formato conocido o estándar? ¿O es un formato inventado?
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 las veces en que aparece un símbolo

Notapor Skull118 » 2013-07-19 16:49 @742

Es un .txt
Skull118
Perlero nuevo
Perlero nuevo
 
Mensajes: 53
Registrado: 2013-03-21 13:38 @610

Re: Contar las veces en que aparece un símbolo

Notapor explorer » 2013-07-19 16:55 @746

No, no me refiero al tipo de archivo, sino si el archivo tiene un formato.
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 las veces en que aparece un símbolo

Notapor Skull118 » 2013-07-19 16:59 @749

Exacto, es algo así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
XXX=XXX
XXXXX=XXXXXXXXX}
X ASDF=LASDJ
X  DD=AÑSDLFKJASÑL
F D  DA=AÑSLDKFJA
G=**********
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


El problema es que a veces viene una línea así.
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
XXXXX=XXXXXXXXX} X AS E D=LASDJ
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Esa es la que me da el problema, necesitaría encontrar la manera de dejarla así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
XXXXX=XXXXXXXXX}
X AS E D=LASDJ
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


El caracter "}" no siempre aparece, los espacios entre "X AS E D" no siempre son los mismos. Ya hice la división con split() y todo bien, exceptuando esa línea.
Skull118
Perlero nuevo
Perlero nuevo
 
Mensajes: 53
Registrado: 2013-03-21 13:38 @610

Re: Contar las veces en que aparece un símbolo

Notapor explorer » 2013-07-19 17:43 @779

Bueno, pues si ese es el formato (muy extraño), la solución sería hacer un simple
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$string =~ s/\}/\n/g;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
que lo que hace es sustituir las llaves de cierre por el carácter de nueva línea.
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 las veces en que aparece un símbolo

Notapor Skull118 » 2013-07-19 17:54 @787

El problema está en que muchas veces las líneas vienen algo así

TexVal={{Content-Type:{application/sdp} Content-Disposition:{value} Content-Length:{152}

Esa expresión regular me dejaría mi línea algo así:

{{Content-Type:{application/sdp
Content-Disposition:{session
Content-Length:{152

¿O me equivoco?
Skull118
Perlero nuevo
Perlero nuevo
 
Mensajes: 53
Registrado: 2013-03-21 13:38 @610

Re: Contar las veces en que aparece un símbolo

Notapor explorer » 2013-07-19 17:57 @789

Pues no, no te equivocas, quedaría así.

Una pregunta... ¿Ese formato no es JSON? Ejemplo.
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 las veces en que aparece un símbolo

Notapor Skull118 » 2013-07-19 18:00 @792

Para serte honesto, solo me dieron el archivo y los requerimientos, desconozco realmente qué lenguaje sea a casualidad, sin embargo tengo entendido que es SIP.

Ahora bien, ¿habrá alguna forma de contar cuántas veces aparece el símbolo "=" en una línea?
Skull118
Perlero nuevo
Perlero nuevo
 
Mensajes: 53
Registrado: 2013-03-21 13:38 @610

Re: Contar las veces en que aparece un símbolo

Notapor explorer » 2013-07-19 18:07 @797

Sí, sí que hay una manera:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$veces  =  $string =~ tr/=/=/;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Ya veo que el formato está en el RFC4566.
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

Siguiente

Volver a Básico

¿Quién está conectado?

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