Mar Ago 19, 2008 6:50 am
|
 |
ElCidJJ
Perlero Nuevo

|
Registrado: 19 Ago 2008
Mensajes: 8
|
|
| Comprobar enteros y cadenas |
|
|
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:
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. |
|
|
|

Mar Ago 19, 2008 6:56 am
|
 |
monoswim
Vive para Perl en Español

|
Registrado: 18 Nov 2003
Mensajes: 716
Ubicación: Buenos Aires
|
|
|
|
|
Con expresiones regulares puedes hacer algo así:
| Perl: | if ($variable =~ /^ [0- 9]+$/ ){
print "es numero";
}else{
print "tiene letras";
} |
Saludos |
|

Mar Ago 19, 2008 7:35 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4100
Ubicación: Valladolid, España
|
|
|
|
|
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 |
|
|
Mie Ago 20, 2008 5:37 am
|
 |
ElCidJJ
Perlero Nuevo

|
Registrado: 19 Ago 2008
Mensajes: 8
|
|
|
|
|
| Muchisisisimas Gracias, me ha aclarado mucho. |
|
Powered by phpBB © 2001, 2005 phpBB Group
|