http://www.perlmonks.org?node_id=1055406


in reply to All Calculations Done with One Variable Give Integer Answers

Hi,

Could you, at some point in your code where $gap is producing this "integer" behaviour, insert the following piece of code:
use Devel::Peek; Dump($gap);
and then provide us with the output of that Dump().

$gap = "$gap.00";


I suspect that you'll get the same change in behaviour by doing simply:
$gap = "$gap";
Cheers,
Rob

Replies are listed 'Best First'.
Re^2: All Calculations Done with One Variable Give Integer Answers
by HalNineThousand (Beadle) on Sep 24, 2013 at 06:09 UTC
    I'm not clear whether I should try dumping after I get $gap (now $mins in the code I've added) from the module or before that. But you are right. Just using quotations is enough to make it change behavior. With that known, can you tell me just what is happening and if that's a reliable hack?

      The line $mins = "$mins.00"; turns the Math::BigInt object into a standard Perl scalar. If you inspect $mins using Data::Dumper before and after $mins = "$mins.00"; you get:

      $VAR1 = bless( { 'value' => [ 43200 ], 'sign' => '+' }, 'Math::BigInt' ); $VAR1 = '43200.00';

      So (with hindsight!) had you used Data::Dumper as a first step to see what's going on, you would have been told immediately. But this is only with hindsight...

        Perhaps this time it is "Hindsight", but next time it could be "Lesson Learned", "Experience", "Defensive Programming", or, Monastary forbid, a "Good Engineering Practice".

        This incident has added a rather large stone on the scale which was already precariously close to tipping in favor of switching to the use of Data::Dumper over my rather obsolete and unrobust homespun debug module from longer ago than I'd care to admit.

        Thanks for the analysis and summary. Thanks to the OP for posting -- and clarifying -- the problem.

        Yes, with hindsight! Funny how often we get the answer and then realize that the right 1st step would have solved it. Thank you!