Página 3 de 5

Re: Obtener código web desde Perl

NotaPublicado: 2011-05-19 16:13 @717
por explorer
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 <".

Re: Obtener código web desde Perl

NotaPublicado: 2011-05-19 16:56 @747
por nobody
¡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.

Re: Obtener código web desde Perl

NotaPublicado: 2011-05-19 17:08 @756
por explorer
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.

Re: Obtener código web desde Perl

NotaPublicado: 2011-05-20 04:48 @242
por nobody
Sería con un while(), ¿ no ?

Re: Obtener código web desde Perl

NotaPublicado: 2011-05-20 05:13 @259
por explorer
Puedes hacerlo con while(), until(), for(), goto...

Re: Obtener código web desde Perl

NotaPublicado: 2011-05-21 14:36 @650
por nobody
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 ?

Re: Obtener código web desde Perl

NotaPublicado: 2011-05-21 14:42 @654
por explorer
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.

Re: Obtener código web desde Perl

NotaPublicado: 2011-05-21 14:47 @657
por nobody
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 ?

Re: Obtener código web desde Perl

NotaPublicado: 2011-05-21 16:43 @738
por explorer
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.

Re: Obtener código web desde Perl

NotaPublicado: 2011-05-22 03:39 @194
por nobody
¡¡ 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"