• Publicidad

Cómo reemplazo números mediante un arreglo

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

Cómo reemplazo números mediante un arreglo

Notapor BigBear » 2009-12-23 20:13 @884

Hola.

Ando queriendo reemplazar en una cadena un cierto número por hola.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
@numE = ( "1","2","4");

$num = "1.2.3.4";

$hola = "hola";

foreach $z (@numE) {

    $num =~ s/$z/$hola/;

    print "LO HICE CON $z   $num\n";

}
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Los números que quiero reemplazar por hola son lo que están en @numE. El script me tira lo siguiente:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
LO HICE CON 1   hola.2.3.4
LO HICE CON 2   hola.hola.3.4
LO HICE CON 4   hola.hola.3.hola
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Pero lo que yo quiero hacer es

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
LO HICE CON 1   hola.2.3.4
LO HICE CON 2   1.hola.3.4
LO HICE CON 4   1.2.3.hola
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


¿Alguien me explica cómo arreglo el script para que me dé lo que quiero?
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Publicidad

Re: Cómo reemplazo números mediante un arreglo

Notapor explorer » 2009-12-23 20:22 @890

El problema es que estás modificando $num en cada vuelta. Debes hacer la sustitución con una copia fresca de $num.

Eso se arregla con algo así (no probado):
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my @numeros = qw( 1 2 4 );
my $cadena  = '1.2.3.4';
my $hola    = 'hola';

for my $numero (@numeros) {
    my $copia = $cadena;        # aquí es donde haremos los cambios, no en $cadena

    $copia =~ s/$numero/$hola/g;

    print "LO HICE CON $numero   $copia\n";
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Y le he añadido /g para que haga el cambio en toda la cadena de caracteres, y no solo en el primero que encuentre.
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


Volver a Básico

¿Quién está conectado?

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