• Publicidad

Comprobar enteros y cadenas

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

Comprobar enteros y cadenas

Notapor ElCidJJ » 2008-08-19 07:50 @368

Hola, soy nuevo aquí, y estoy haciendo un proyecto para la facultad en Perl. Intento resolver mis propias dudas yo solo, para así aprender más, pero es que con esta no puedo y espero que me podáis ayudar.

El caso es que leyendo el contenido de un fichero me gustaría saber si el primer elemento de cada línea de ese fichero es un número (entero). El caso es que necesito saber si es un número, para escribir en el fichero la continuación a ese número. Lo que no sé es comparar eso. Es decir,

Si (Variable == entero) que haga una cosa y sino pues otra. ¿Cómo se hace eso en Perl?

Necesito ayuda, espero que me lo digáis. Muchísimas Gracias.

Sino os queda claro os pongo un ejemplo:

Abro un fichero cualquiera cuyo contenido es

Código: Seleccionar todo
1 sadsa sadsad
2 sadsad asdsa
3 sadsa sadsad


Lo que quiero hacer es coger el primer elemento de cada línea, y comprobar si es un número, para añadir abajo de esa línea la siguiente:

Código: Seleccionar todo
4 sadsa asdsad


Si no es un número, por ejemplo, abro un fichero cualquiera cuyo contenido es

Código: Seleccionar todo
ewqewew wqewqew wqewqee
wqeqwe qwe wqewq wqewqew
wqewqe qweqw wqewqeqwe


La 4ª línea, entonces, debería de ser:

Código: Seleccionar todo
ewqewew wqewqew wqewqee
wqeqwe qwe wqewq wqewqew
wqewqe qweqw wqewqeqwe
1


¿Cómo puedo hacer esa comprobación? Muchísimas Gracias y espero que me ayudéis.
ElCidJJ
Perlero nuevo
Perlero nuevo
 
Mensajes: 10
Registrado: 2008-08-19 07:38 @360

Publicidad

Notapor monoswim » 2008-08-19 07:56 @372

Con expresiones regulares puedes hacer algo así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
if ($variable =~ /^[0-9]+$/){
    print "es numero";
}else{
    print "tiene letras";
}
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4


Saludos
MonoSwim
Perl Programming Language
Avatar de Usuario
monoswim
Perlero nuevo
Perlero nuevo
 
Mensajes: 452
Registrado: 2003-11-18 16:13 @717
Ubicación: Buenos Aires

Notapor explorer » 2008-08-19 08:35 @399

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

Lo que también puedes hacer es comprobar que la primera palabra que lees del fichero sea mayor que cero.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
use strict;
#use warnings;
#use diagnostics;

my $maximo = 1;

while (my $linea = <DATA>) {

    my ($palabra) = split(" ", $linea);    # Primera palabra de la línea

    if ($palabra > 0) {                    # ¿Es mayor que 0?
        $maximo = $palabra                 # Sí, apuntamos su valor
            if $palabra > $maximo;         #   si supera nuestro máximo valor encontrado
    }

    print $linea;
}

print $maximo+1, "\n";                     # Pintamos el valor siguiente

__DATA__
1 ewqewew wqewqew wqewqee
wqeqwe qwe wqewq wqewqew
wqewqe qweqw wqewqeqwe
Coloreado en 0.002 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

Notapor ElCidJJ » 2008-08-20 06:37 @317

Muchisisisimas Gracias, me ha aclarado mucho.
ElCidJJ
Perlero nuevo
Perlero nuevo
 
Mensajes: 10
Registrado: 2008-08-19 07:38 @360


Volver a Básico

¿Quién está conectado?

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

cron