|Pathologically Eclectic Rubbish Lister|
One thing I learned (although in another area of studies): It's not important to know everything, but it's important to know where too look it up or ask.
As long, as you find a solution, noone will ask from where the solution came. Although it's common and helpful for everyone to point at your sources. The important thing is that you do have a solution.
Regarding you question about floats as input: I did a lot of programming, also in perl. Although I don't really know, how to do it; I have some starting points.
printf/scanf comes to my mind - So I'd look this up, firstly.
After this, I'd most probably lookup the problem in CPAN. User input is always a source of trouble. Not to say, users are the real source of all these troubles.. They always do things, you'd never expect. Instead of entering a number, putting a cat onto the keyboard. Or entering sql-injects. or whatever.
So, to handle border cases, different localizations, security flaws, ... ..., with some luck there's a package already there.
If there's a reason to implement the thing myself - maybe, cause it's homework, or cause there isn't a module - google is your friend.
Just don't do only Copy and Paste, copy only, what you did understand.
Which is the most important: I really don't want to know, how many things are just copy'd n pasted, without any understanding at all.
Having studied Philosophy, I had to learn, most people don't know at all, what they are talking about.
There's a big advantage in programming: There are valid and well defined citerias. Either this thing works, or it doesnt.
Sadly, most software works - but works only within defined criterias.
E.g. Most microsoft software works only for a limited time - I never managed to keep (years before) Windows XP running longer than, say, 24 hours.
Obviously someone did copy and paste the malloc routine into gwbasic ( suspecting Windows has been written in basic), but didn't UNDERSTAND, that he had to copy also the free routine.
When the error showed up, cause free wasn't defined, the debug team luckily found also the fix: Just define an empty free function, and everything is ok. Especially, since the release was overdue.
And, as always, me as the user did the unexpected: Why the heck keeps someone his pc running for 24 hours???
8 hours runtime SHOULD BE ENOUGH FOR EVERYONE!!!
(Quoting Bill's famous idea, 640kB should be enough for everyone.....)
Anyways, seems to me you are well on the way.