Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

Re: Leading Zeros confound eval() ?

by hippo (Bishop)
on Jul 22, 2015 at 08:28 UTC ( [id://1135812]=note: print w/replies, xml ) Need Help??


in reply to Leading Zeros confound eval() ?

This is string eval and that's the reason why string eval is considered bad practice (generally).

$ cat x.pl #!/usr/bin/perl -Tw use strict; use warnings; my $x = "016"; my $y=$x * 10; print "y=$y\n"; $y = eval( "$x * 10" ); print "string eval evalled 016 * 10 , y = $y\n"; $y = eval { $x * 10; }; print "block eval evalled 016 * 10 , y = $y\n"; $ ./x.pl y=160 string eval evalled 016 * 10 , y = 140 block eval evalled 016 * 10 , y = 160

Avoid string eval. The reasons why you see the numbers you do are well explained in the previous replies. Use block eval and the problem (the apparent inconsistency) disappears and you don't have to think about unexpected stringification.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1135812]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others browsing the Monastery: (2)
As of 2024-04-25 06:22 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found