OK, como prefacio, esta pregunta es potencialmente 'más estúpida' que mi nivel normal de preguntas; sin embargo, este problema me ha molestado durante los últimos días, así que lo preguntaré de todos modos. Daré un ejemplo falso de cuál es mi problema, así que espero generalizarlo para mi problema actual.Perl, cuerdas, flotadores, pruebas unitarias y expresiones regulares!
#!/usr/bin/perl -w use strict;
use Test::More 'no_plan';
my $fruit_string = 'Apples cost $1.50';
my ($fruit, $price) = $fruit_string =~ /(\w+)s cost \$(\d+\.\d+)/;
# $price += 0; # Uncomment for Great Success
is ($price, 1.50, 'Great Success');
Ahora, cuando esta se ejecuta me sale el mensaje
# Failed test 'Great Success'
# got: '1.50'
# expected: '1.5'
Para hacer el trabajo de prueba - I cualquiera descomentar la línea comentada, o utiliza is ($price, '1.50', 'Great Success')
. Ambas opciones no funcionan para mí: estoy probando una gran cantidad de datos anidados utilizando Test :: Deep y cmp_deeply. Mi pregunta es, ¿cómo se puede extraer un doble de una expresión regular y luego utilizarlo de inmediato como un doble, o si hay una mejor manera de hacerlo saberlo? Y no dude en decirme que ocupe la jardinería o algo así, aprender Perl es difícil.
Está comparando la cuerda con el número, entonces se las compara como cuerdas. No creo que puedas hacer nada con eso. –