in reply to Declaring a variable's type

From perldata:

       Scalars aren't necessarily one thing or another.  There's no place to declare a scalar
       variable to be of type "string", type "number", type "reference", or anything else.
       Because of the automatic conversion of scalars, operations that return scalars don't need
       to care (and in fact, cannot care) whether their caller is looking for a string, a num-
       ber, or a reference.  Perl is a contextually polymorphic language whose scalars can be
       strings, numbers, or references (which includes objects).  Although strings and numbers
       are considered pretty much the same thing for nearly all purposes, references are
       strongly-typed, uncastable pointers with builtin reference-counting and destructor invo-
       cation.

Igor 'izut' Sutton
your code, your rules.