mjlush has asked for the wisdom of the Perl Monks concerning the following question:
I've found certain triplets of numbers that added up and put in a variable are, equal to 1, print as 1, are true on looks_like_number, match 1 when evaluated with eq but do not match 1 using using ==.
The order the numbers are added matters, the script below produces output in the form.
0.688 + 0.289 + 0.023 total is 1 looks like a number fails on == matches on eq 0.688 + 0.023 + 0.289 total is 1 looks like a number matches on == matches on eq 0.559 + 0.380 + 0.061 total is 1 looks like a number matches on == matches on eq #!/usr/bin/perl use strict; use warnings; use Scalar::Util qw(looks_like_number); while (<DATA>) { if (m{^#}) { print; next; } chomp; my ($x, $y, $z) = split(m{ }); # my $var = $x + $y + $z; my $var = $x; $var += $y; $var += $z; print "$x + $y + $z\n"; print "total is $var\n"; if (looks_like_number($var)) { print "looks like a number\n"; } else { print "doesn't look like a number\n" } if ($var == 1) { print "matches on ==\n"; } else { print "fails on ==\n"; } if ($var eq 1) { print "matches on eq\n"; } else { print "fails on eq\n" } print "\n"; } __DATA__ #FAIL 0.688 0.289 0.023 0.500 0.422 0.078 0.693 0.290 0.017 0.207 0.563 0.230 0.491 0.421 0.088 0.498 0.420 0.082 0.696 0.285 0.019 0.693 0.286 0.021 0.517 0.409 0.074 # ORDER CHANGED 0.688 0.023 0.289 0.422 0.078 0.500 # PASS 0.559 0.380 0.061 0.648 0.314 0.038 0.546 0.414 0.040 0.600 0.348 0.052 0.653 0.311 0.036 0.741 0.245 0.014 0.787 0.201 0.012 0.651 0.318 0.031 0.627 0.331 0.042
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: $var == 1 fails when $var = 1
by LanX (Saint) on Sep 20, 2018 at 15:08 UTC | |
by mjlush (Novice) on Sep 20, 2018 at 15:23 UTC | |
by LanX (Saint) on Sep 20, 2018 at 15:33 UTC | |
by mjlush (Novice) on Sep 20, 2018 at 15:40 UTC | |
by syphilis (Archbishop) on Sep 21, 2018 at 02:07 UTC | |
by LanX (Saint) on Sep 20, 2018 at 15:43 UTC | |
Re: $var == 1 fails when $var = 1
by hippo (Bishop) on Sep 20, 2018 at 15:09 UTC | |
Re: $var == 1 fails when $var = 1 (lost post)
by LanX (Saint) on Sep 20, 2018 at 23:44 UTC | |
by syphilis (Archbishop) on Sep 21, 2018 at 14:55 UTC | |
by LanX (Saint) on Sep 21, 2018 at 15:41 UTC | |
by Your Mother (Archbishop) on Sep 21, 2018 at 01:59 UTC | |
by LanX (Saint) on Sep 21, 2018 at 02:11 UTC | |
by BillKSmith (Monsignor) on Sep 21, 2018 at 13:25 UTC | |
by LanX (Saint) on Sep 21, 2018 at 14:02 UTC | |
by Your Mother (Archbishop) on Sep 21, 2018 at 02:50 UTC | |
Re: $var == 1 fails when $var = 1
by Anonymous Monk on Sep 20, 2018 at 16:36 UTC |
Back to
Seekers of Perl Wisdom