in reply to Chomping numbers?

I'm guessing Perl automagically chomps them when doing mathematical operations?

yeah, see Re: Incrementing "Infinity" bug (numification, perlnumber, magic increment decrement), perlnumber, perldata, Infinity and Inf?, atoi, atof, strtod, Is this odd behavior a floating point problem?, What Every Programmer Should Know About Floating-Point Arithmetic or Why don’t my numbers add up?

Should I chomp them manually got style?

Its What? See below

Also, anything also "wrong", or could be done better with my code?

You can do the chomping in your sub input, so you don't have to remember to do it later

Aside from that looks great for a beginning programming exercise

For other approaches see Term::Interact example, dispatch table,

Replies are listed 'Best First'.
Re^2: Chomping numbers?
by 7cardcha (Novice) on Jul 18, 2013 at 04:23 UTC
    Answered my question perfectly, meant "for style", but I guess that's a stupid question, thanks much!

      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

      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