Tamam, bu soru, normal soru seviyemden potansiyel olarak 'stupider' olur - ancak bu sorun son birkaç gündür beni sinirlendiriyordu, bu yüzden yine de soracağım. Sorunumun ne olduğuna dair sahte bir örnek vereceğim, böylece mevcut sorunuma genelleştirmeyi ümit edebilirim. Ben de yorumladı uncomment veya is ($price, '1.50', 'Great Success')
kullanmak - Bu çalıştırılır ŞimdiPerl, dizeleri, yüzer, birim testi ve düzenli ifadeler!
#!/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');
Ben
# Failed test 'Great Success'
# got: '1.50'
# expected: '1.5'
Test çalışması için mesaj alıyorum. Her iki seçenek de benim için çalışmıyor - Test :: Deep ve cmp_deeply kullanarak büyük miktarda iç içe geçmiş verileri test ediyorum. Benim sorum şu ki, bir regexp'den bir çifresini nasıl çıkartabiliyorsunuz, sonra bir çift olarak hemen kullanabiliyorsunuz - ya da daha iyi bir yol varsa, tamamen bana bildirin - ve bana bahçıvanlık ya da bir şey lol gibi şeyler söyleme konusunda çekinmeyin, Perl öğrenmek zor.
Dizeyle sayıyı karşılaştırıyorsunuz, dolayısıyla dizelerle karşılaştırılıyorlar. Onunla bir şey yapabileceğini sanmıyorum. –