in reply to Regex Tester

why not make your code a little bit more readable (and a bit more perl-ish), by changing this:
# assign valid strings my @valid = ( '$1', '$1.11', '$.11', '-$1', '-$1.11', '-$.11', '$-1', '$-1.11', '$-.11', );
to something like this, using the qw() operator:
# assign valid strings my @valid = qw( $1 $1.11 $.11 -$1 -$1.11 -$.11 $-1 $-1.11 $-.11 );
Of course, if you ever have any spaces in your future tests, this goes mostly out the window, but since your strings seem to fit just fine, I would say it will be a little easier to read and maintain. So long as no one reads the $- and $1 as variables, you should be good to go.