• Publicidad

Obtener código web desde Perl

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

Re: Obtener código web desde Perl

Notapor explorer » 2011-05-19 16:13 @717

nobody escribiste:Entonces, ¿Perl no interpreta las ","? ¿Hay que cambiar la "," por un "."?
En la sintaxis del lenguaje Perl, se usa el punto decimal para representar la coma decimal. Entonces, si tenemos

$a = '32,66';

es, para Perl, una cadena de cinco caracteres que se guardará en la variable $a. Si hacemos luego una operación matemática con ella,

$a = $a + 0;

entonces, Perl intentará convertir la secuencia de caracteres a un número, para luego sumarle un cero (en este ejemplo). Empezará leyendo por la izquierda, y al llegar a la ',', pues se parará, porque la ',' ya no forma parte de que Perl busca en un número. Al final, $a valdrá 32.

Más información en perldoc perlnumber.

Naturalmente, si no vas a hacer operaciones matemáticas con el valor, no necesitas realizar la operación de cambio de la coma al punto.

nobody escribiste:my($valor) = $contenido =~ m/valor>(.+?)</;

Eso significa que dentro de contenido buscaremos valor> y cualquier carácter hasta <...

¿Qué pasaría si no pusiéramos el +??
Pues que no estaríamos buscando "cualquier carácter hasta <".
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

Publicidad

Re: Obtener código web desde Perl

Notapor nobody » 2011-05-19 16:56 @747

¡Ok! Pues creo que no haré operaciones matemáticas... Pero por si acaso cambiaré la "," por el "." ...

Voy a pegar el código...

#!perl

use LWP::Simple;

print "Introduzca nombre del valor:\n";
$valor = <STDIN>;
print "Introduzca precio de compra:\n";
$compra = <STDIN>;
$contenido = get("http://bolsaphp.sukiweb.net/api/cv_api.php?usuario=nobo&%20api_key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&%20ticker=$valor");
my($precio)= $contenido =~ m/valor>(.+?)</;
$precio =~ s/[,]/./;
if ($precio <= $compra) {
compra acciones }
else {
(sleep 5 * 60)
}

¿Esto estaría bien? Lo que pretendo hacer es que si el valor que introducimos de compra es igual o mayor que el precio de la acción (entonces significa que ha bajado) la compramos. Sino es así quiero esperar 5 minutos y repetir la comprobación hasta que la compremos.
Última edición por nobody el 2011-05-22 04:17 @220, editado 1 vez en total
nobody
Perlero nuevo
Perlero nuevo
 
Mensajes: 23
Registrado: 2011-05-15 10:11 @466

Re: Obtener código web desde Perl

Notapor explorer » 2011-05-19 17:08 @756

Sí que estás haciendo una operación matemática: la comparación con $compra.

Te falta poner alguna sentencia de bucle que repita las operaciones después de esperar los 5 minutos.
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

Re: Obtener código web desde Perl

Notapor nobody » 2011-05-20 04:48 @242

Sería con un while(), ¿ no ?
nobody
Perlero nuevo
Perlero nuevo
 
Mensajes: 23
Registrado: 2011-05-15 10:11 @466

Re: Obtener código web desde Perl

Notapor explorer » 2011-05-20 05:13 @259

Puedes hacerlo con while(), until(), for(), goto...
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

Re: Obtener código web desde Perl

Notapor nobody » 2011-05-21 14:36 @650

Creo que no lo estoy haciendo bien... El while() tendría que incluir al get, ¿no?

Porque lo que quiero hacer es que si no es igual o menor el precio de compra siga intentándolo hasta que lo sea, y entonces, compre.

Habría que incluir todo en el while(), ¿no? :S ¿ O me estoy complicando la vida ?
nobody
Perlero nuevo
Perlero nuevo
 
Mensajes: 23
Registrado: 2011-05-15 10:11 @466

Re: Obtener código web desde Perl

Notapor explorer » 2011-05-21 14:42 @654

while() significa "mientras la condición sea verdadera, haz esto".

Ahora debes encajar ese significado en lo que quieres hacer.

O muéstranos el código, si no te sale nada.
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

Re: Obtener código web desde Perl

Notapor nobody » 2011-05-21 14:47 @657

Ya lo pegué, esté un poco más arriba... Antes de escribir cómo sería, dime si voy encaminado o no... Lo que quiero hacer es comprobar el precio que yo quiero comprar con el precio de la acción. Si el precio de la acción es menor o igual, comprar la acción; si no, esperar 5 min. (sleep) y luego volver a intentar comprar la acción.

Debería incluir en el while() todo el rollo de get(), etc, etc, ¿ no ?
nobody
Perlero nuevo
Perlero nuevo
 
Mensajes: 23
Registrado: 2011-05-15 10:11 @466

Re: Obtener código web desde Perl

Notapor explorer » 2011-05-21 16:43 @738

Claro que tienes que hacer el get()... ¿cómo si no se va a enterar el programa de que el precio de la acción ha cambiado pasados los 5 m?

Cuando tengas dudas de un algoritmo, intenta escribir y resolverlo con lápiz y papel, recorriendo las sentencias del programa, como si fueras el ordenador. Así sabrás si hace lo que quiere que hagas, o si se te ha olvidado hacer un paso.

Yo veo que sí vas encaminado... solo tienes que escribir el programa y probar.

Cuando te decía a lo de publicar el código, me refería a publicar los nuevos cambios que vas poniendo.
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

Re: Obtener código web desde Perl

Notapor nobody » 2011-05-22 03:39 @194

¡¡ Aaaaaaaaah, ajá !! :D Sí, es lo que hice ¡ja,ja,ja,ja! Por eso me di cuenta de que no iba a saber si había cambiado el precio ;D

Ahora lo postearí porque me da errores de sintaxis :S

#!perl

use LWP::Simple;

print "Introduzca nombre del valor:\n";
$valor = <STDIN>;
print "Introduzca precio de compra:\n";
$compra = <STDIN>;
while ($contenido = get("http://bolsaphp.sukiweb.net/api/cv_api.php?usuario=nobo&%20api_key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&%20ticker=$valor")
my($precio)= $contenido =~ m/valor>(.+?)</
$precio =~ s/[,]/./;)
{
if ($precio <= $compra) {
get ("http://bolsaphp.sukiweb.net/api/cv_api.php?usuario=nobo&api_key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&ticker=$valor&acciones=25&valor=$compra&tipo_de_orden=LIMITADA&intencion=COMPRA") }
else {
(sleep 5 * 60) }
}

Algo falla xD Esto no lo he vuelto a escribir en papel...
Me da error en la línea 10 con el "my"
nobody
Perlero nuevo
Perlero nuevo
 
Mensajes: 23
Registrado: 2011-05-15 10:11 @466

AnteriorSiguiente

Volver a Básico

¿Quién está conectado?

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