Ayuda con un script perl:

Iniciado por 0uts1de, 13 Diciembre 2016, 18:41 PM

0 Miembros y 1 Visitante están viendo este tema.

0uts1de

Hola, os pido ayuda porque soy nuevo en perl e intentando hacer un codigo no funciona y no se porque, antes de empezar, gracias por leer esto, y si eso gracias por la ayuda!!  :)

Empezemos:

He intentado crear un codigo que te pregunta por 2 numeros de autentificación, para luego decirtelos junto a tu nombre, es muy sencillo pero era solo para practicar los "until", lo que lleva until dentro es para comprobar si es un numero, y es alli donde falla,ya que da igual si es numero o no que lo deja pasar, y como no se porque falla aqui estamos!, este es el codigo:
#!usr/local/bin/perl

print "\n" ;

print "recuerde los numeros que escriba, seran preguntados luego\n" ;

print "--------------------------------------\n" ;

print "introduzca sus numeros de identificación : " ;

$num1 = <STDIN> ;

chop $num1 ;

until ( $num1 = ~ /^[+-]?\d+$/ ) {

print "no es un numero,porfavor, escribe un numero:\n" ;

$num1 = <STDIN> ;

chop $num1 ;

}

print "perfecto, sigamos el proceso....\n" ;

print "ahora introduce otro: " ;

$num2 = <STDIN> ;

chop $num2 ;

until ( $num2 = ~ /^[+-]?\d+$/ ) {

print "no es un numero, porfavor escriba uno\n" ;

$num2 = <STDIN> ;

chop $num2 ;

}

print "perfecto, sige mas porfavor...\n" ;

print "introduce tu nombre: " ;

$nom = <STDIN> ;

chop $nom ;

print "vale, ahora reintroduzca sus numeros si estos eran validos, primero el primero que introdució:\n" ;

$num3 = <STDIN> ;

chop $num3 ;

print "ahora el segundo numero, porfavor" ;

$num4 = <STDIN> ;

chop $num4 ;

print "hola $nom , tus numeros identificativos son $num3 y $num4\n " ;


Gracias por la ayuda por adelantado!!!
if (you eq coment){
   print "gracias" ;
}
else {
print ":("  ;
}

Ocelot1994

Hola outside
No se lo que introduciras en tu teclado , pero con el chop vas a borrar el último carácter de la cadena que le pase, acostumbrate a declarar las variables con la palabra reservada "my".

Y otra cosa la expresión regular la tienes mal, empieza haciendo una sencillita y luego vete añadiento mas casos para que te quede un expresión regular más completa,prueba algo así

Código (perl) [Seleccionar]

my $num =<STDIN>;

until($num =~ [A-Z]/gi ){
.......
}


Un saludo

0uts1de

Cita de: Diego5 en 14 Diciembre 2016, 12:58 PM
Hola outside
No se lo que introduciras en tu teclado , pero con el chop vas a borrar el último carácter de la cadena que le pase, acostumbrate a declarar las variables con la palabra reservada "my".

Y otra cosa la expresión regular la tienes mal, empieza haciendo una sencillita y luego vete añadiento mas casos para que te quede un expresión regular más completa,prueba algo así

Código (perl) [Seleccionar]

my $num =<STDIN>;

until($num =~ [A-Z]/gi ){
.......
}


Un saludo

Gracias por la respuesta Diego5, gracias a tu comentario he consegido que funcione, y el tema de las variables me servira para mas adelante, un saludo a ti tambien  :)
if (you eq coment){
   print "gracias" ;
}
else {
print ":("  ;
}