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 (Archbishop) 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 |