Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses
 
PerlMonks  

Re^2: Chomping numbers?

by 7cardcha (Novice)
on Jul 18, 2013 at 04:23 UTC ( [id://1044963]=note: print w/replies, xml ) Need Help??


in reply to Re: Chomping numbers?
in thread Chomping numbers?

Answered my question perfectly, meant "for style", but I guess that's a stupid question, thanks much!

Replies are listed 'Best First'.
Re^3: Chomping numbers?
by davido (Cardinal) on Jul 18, 2013 at 04:48 UTC

    Just keep in mind that Perl has a lot of DWIMery (Do What I Mean-ery) built-in. If you treat a string as a number, Perl will let you, and will attempt to return a reasonable value. If the string starts with a number, that number becomes the numeric value. If it doesn't start with a number, its numeric value will be zero. So "123abc" has a numeric value of 123. "abc123" has a numeric value of zero.

    So Perl is happy to convert "123\n" to the numeric value 123. However, sanitizing your input at the earliest possible point is generally good practice. Getting into the habit of calling chomp on your textual input as soon as you receive it will help you to avoid forgetting about it later, and then wondering why $input ne "Hello!" # True, because we forgot to chomp.


    Dave

Re^3: Chomping numbers?
by derby (Abbot) on Jul 18, 2013 at 11:53 UTC

    davido has the correct answer but for a visual representation of his explanation, you could always use Devel::Peek ...

    ... use Devel::Peek; .... print Dump( $bottom ); my $middle = int(($bottom + $top) / 2); print Dump( $bottom ); ....
    yields:
    Enter the bottom most number: 1 Enter the top most number: 10 Hit enter once you have your number! SV = PVMG(0x1009725b0) at 0x100847c98 REFCNT = 1 FLAGS = (PADMY,POK,pPOK) IV = 0 NV = 0 PV = 0x10020a3f0 "1\n"\0 CUR = 2 LEN = 16 SV = PVMG(0x1009725b0) at 0x100847c98 REFCNT = 1 FLAGS = (PADMY,IOK,POK,pIOK,pPOK) IV = 1 NV = 0 PV = 0x10020a3f0 "1\n"\0 CUR = 2 LEN = 16 Is it 5(l/h/t)?:

    and from this, you can see no chomping has taken place but perl's DWIMery has taken your scalar (SV) and taken the string value (PV) and set its integer value (IV).

    -derby

Log In?
Username:
Password:

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

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

    No recent polls found