Perl is, contrary to C, a dynamically typed language.
A static typing, i.e. at compilation time, is nearly impossible.
Otherwise you'd need to type everything, including the result of functions. Even then....¹
A check at runtime is costly, that's why dynamically typed languages are slower, but easier to code.
As I already said, you could tie the variable with a self-made STORE (This, Value) function which does your checks on Value before storing it.
Attribute::Handlers has an example for Syntactic sugar to "hide" the tie-ing procedure behind an attribute.
I'm not aware of any CPAN modules already providing that, especially because there are certainly different models how to react on wrong types ( die , warn , transform, combine)
I already gave you all the links, you'd need to do it yourself for your own needs.
For instance 1E0 is a whole number in float notation, opinions will differ.
I'm saying all of this for completeness, because it's a total overkill for your problem.
There is no magic wand which can do the heavy lifting for you...
¹) Perl, like other dynamic languages, does a lot of DWIM typecasting of variables. This doesn't translate well if you want to keep it fast. |