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


in reply to How can we interpolate an expression??

use warnings; use strict; use 5.14.0; my $number = 5; my $multiplier = 3; say "Product is $number * $multiplier"; say "Product is ", $number * $multiplier; __END__ Product is 5 * 3 Product is 15

Replies are listed 'Best First'.
Re^2: How can we interpolate an expression??
by Rohit Jain (Sexton) on Sep 20, 2012 at 18:14 UTC
    Can't we make your first "say ..." statement to print like the second one?? When we do this: -
    say "number is $number";
    It simply replaces the $number with its value.. Shouldn't it do the same for an expression.. or we have to do it in some different way?
      If the interpreter implemented the interpolation you are specifying, then how could I as a programmer make it output the string Product is 5 * 3? There'd be some pretty non-intuitive side effects.

      Kenosis below has given you a way to be clever, but this is all getting a little clever for my taste. For complex output, I usually prefer going all the way to printf since, after all, you desire a formatted print. So maybe printf "number is %d\n", $number * $multiplier;. toolic's solution still strikes me as pretty clean as well.


      #11929 First ask yourself `How would I do this without a computer?' Then have the computer do it the same way.

        Yeah it's right that its not worth making simple thing complex.. But just wanted to know whether there is a way to do it. Just for the sake of knowing. Anyways I am going to use the other way.

        And what you are saying about that printf, I haven't reached there, so didn't knew that also existed in Perl. Will sure be interesting to use that.. For now, I am using concatenation using '.' or ','

        Thanks Anyways :)