Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Comprobar enteros y cadenas

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Básico
Mensaje Mar Ago 19, 2008 6:50 am
ElCidJJ
Perlero Nuevo
Perlero Nuevo
Registrado: 19 Ago 2008
Mensajes: 8
Comprobar enteros y cadenas Responder citando

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:
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:
4 sadsa asdsad


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

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


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

Código:
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.
Mensaje Mar Ago 19, 2008 6:56 am
monoswim
Vive para Perl en Español
Vive para Perl en Español
Registrado: 18 Nov 2003
Mensajes: 716
Ubicación: Buenos Aires
Responder citando

Con expresiones regulares puedes hacer algo así:

Perl:
if ($variable =~ /^[0-9]+$/){
    print "es numero";
}else{
    print "tiene letras";
}


Saludos
Mensaje Mar Ago 19, 2008 7:35 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4100
Ubicación: Valladolid, España
Responder citando

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.

Perl:
#!/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
Mensaje Mie Ago 20, 2008 5:37 am
ElCidJJ
Perlero Nuevo
Perlero Nuevo
Registrado: 19 Ago 2008
Mensajes: 8
Responder citando

Muchisisisimas Gracias, me ha aclarado mucho.
Publicar nuevo tema   Responder al tema    Foros de discusión -> Básico Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group