Stongly Typed. When we compile the compiler checks all the assignment to make sure they're legal and legit and won't cause problems. Its not an end all but it helps a lot. We also contrain types. For example an integer to between 10 and 20. If the variable ever gets out of this range during run time an exception is thrown and handled by other parts of our code.
I suspect that you are right and that Perl is not the tool for the job you have to do. I'm not going to disagree with that at all. I'm a big fan of using the right tool for the job.
But have you ever had look at Attribute::Types? It's what I'd use to achieve some of what you've specified above.
Attribute::Types allow you to write code like the following:
my $count : INTEGER; # Can only store an integer
my $restr : INTEGER(10..20) # Can only store an integer
# between 10 and 20.
my $some : Type(&somesub); # Can only store values for
# which somesub() returns true.
All of this checking is done at run-time which makes things a little bit harder than other strongly typed languages, but it does give you this functionality if you wish.
Hope this helps,
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.
| & || & |
| < || < |
| > || > |
| [ || [ |
| ] || ] ||