in reply to Re: When does '123' become the number 123.0?
in thread When does '123' become the number 123.0?

Let's say that my use of $x is inside a loop and complicated, like $y = $x**$x or somesuch, and also prints $y and $x to the console.

I'm assuming (and hoping) that perl is smart enough to convert $x to a number for the computations and to a string for printing, and do it all at compile time and not at runtime. Is this a safe assumption?

  • Comment on Re^2: When does '123' become the number 123.0?

Replies are listed 'Best First'.
Re^3: When does '123' become the number 123.0?
by syphilis (Archbishop) on Jun 17, 2008 at 00:31 UTC
    Perl will definitely treat $x and$y as numbers for the computations, and when you print $x and $y you will be presented with their current numeric values. If that's what you're after (and I assume it is) then you have nothing to worry about. But if, for some perverse reason, you want the following to print $y's string value (2) instead of its numeric value (7) then you're out of luck:
    use warnings; $y = "2"; $y += 5; print $y;
    Btw, it's all being taken care of quite efficiently at runtime - not compile time. I wouldn't worry about wasting cycles - this is the way it's designed to work. Just let perl handle it.

    As mentioned elsewhere in this thread, doing repeated Devel::Peek::Dump($x) is the best way of seeing how perl keeps track of things by using the scalar's flags and (PV,IV,UV,NV) slots.

    Cheers,
    Rob