¿Cómo puedo convertir una cadena en un flotador con Perl?
-
19-09-2019 - |
Pregunta
¿Hay alguna función como int()
que puede convertir una cadena a flotar valor?
Actualmente estoy usando el siguiente código:
$input=int(substr($line,1,index($line,",")-1));
Necesito convertir la cadena devuelta por substr
flotar.
Solución
Sólo usarlo. En Perl, una cadena que parece un número es un número.
Ahora, si usted quiere estar seguro de que la cosa es un número antes usarla luego hay un método de utilidad en Scalar::Util
que lo hace:
use Scalar::Util qw/looks_like_number/;
$input=substr($line,1,index($line,",")-1);
if (looks_like_number($input)) {
$input += 1; # use it as a number!
}
En base a la entrada de la muestra que dejó en los comentarios, un método más robusto de extraer el número es:
$line =~ /([^\[\],]+)/; # <-- match anything not square brackets or commas
$input = $1; # <-- extract match
Otros consejos
No sé lo que sus datos se parece, pero te das cuenta que el tercer argumento a substr es una longitud, una posición no, ¿verdad? Además, la primera posición es 0. Sospecho que no está recibiendo los datos que piensa que está recibiendo, y sobre todo accidentalmente funciona porque está comenzando en el principio de la cadena y sólo fuera por una.