if ($trama{$SLA} = 'S')
if ($trama{$SLO} = 'W')
Deberia de ser...
if ( $trama{SLA} eq 'S')
if ( $trama{SLO} eq 'W')
También culpa mía... me he dado cuenta de que lo pusiste el 26 de julio y ni me dí cuenta... si es que es un fallo muy normal...
Otra cosa... queda muy espectacular todo el cálculo y está genial ponerlo para aprender.
Yo, como soy mayor, usaría
- Código: Seleccionar todo
use Geo::Coordinates::UTM;
my ($zona,$easting,$northing)=latlon_to_utm("International",$latitud,$longitud);
Pero repito... está muy bien hacerlo todo uno mismo.
Ya lo veo: te falta algo de dinero...
$sql .= join( ', ', map { "$_ = \'$trama{_}\'" } keys %trama );
debería de ser
$sql .= join( ', ', map { "$_ = \'$trama{$_}\'" } keys %trama );
La mayoría de todos estos fallos nos los ahorraríamos si usáramos use warnings; al principio. Y con use strict;, mejor.
Sí... y es un rollo... yo lo haría en el bucle donde lees los campos. Si lees un campo de esos, lo que haces entonces es meter en %trama una clave distinta con ese valor. Así no tienes que tocar nada después... Bueno, es una opción...Josmanue escribiste:Un pequeño detalle más, que me acabo de dar cuenta, los campos dentro de la base de datos no tienen exactamente el mismi nombre que los campos que vienen en la cadena, por ejemplo,
el campo TIE corresponde al campo 'dia' de la BD
el campo VAL corresponde al campo 'validez' de la BD
LAT es 'latitud'
.....
Así que a la hora de construir la sentencia del INSERT tengo que cambiar esos nombres no? si no no me los va a reconocer.