OK, przedmowa to pytanie jest potencjalnie "głupsze" niż mój normalny poziom pytania - jednak ten problem denerwuje mnie od kilku ostatnich dni, więc i tak o to zapytam. Podam próbny przykład mojego problemu, więc mogę mieć nadzieję na uogólnienie go na mój obecny problem.Perl, stringi, spływy, testy jednostkowe i regexpy!
#!/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');
Teraz, kiedy ten jest prowadzony otrzymuję komunikat
# Failed test 'Great Success'
# got: '1.50'
# expected: '1.5'
, aby prace testowy - ja też odkomentować skomentował linię lub użyj is ($price, '1.50', 'Great Success')
. Obie opcje nie działają dla mnie - testuję ogromną ilość zagnieżdżonych danych przy użyciu Testu :: Głębokie i cmp_deeply. Moje pytanie brzmi: jak wyodrębnić podwójne z regexp, a następnie użyć go natychmiast jako podwójne - lub jeśli istnieje lepszy sposób w ogóle daj mi znać - i nie krępuj się powiedzieć mi, aby podjąć ogrodnictwo lub coś lol, nauka Perl jest ciężko.
Porównujesz ciąg znaków z liczbą, więc są one porównywane jako ciągi. Nie sądzę, że możesz z tym zrobić. –