#!/usr/bin/perl -w # script to test regular expressions. use strict; # assign the regular expression my $re = qr/^(\$-|-\$|\$)(\d+|(\d*\.\d\d))$/; # assign valid strings my @valid = ( '$1', '$1.11', '$.11', '-$1', '-$1.11', '-$.11', '$-1', '$-1.11', '$-.11', ); # assign invalid strings my @invalid = ( '', '$', '$1.1', '$1.111', '$.1', '$.111', '-', '-$', '-$1.1', '-$1.111', '-$.1', '-$.111', '$-', '$-1.1', '$-1.111', '$-.1', '$-.111', ); # leave alone my $mismatches = 0; foreach my $valid (@valid) { if ( $valid !~ $re ) { print "valid string doesn't match: $valid\n"; $mismatches += 1; } } foreach my $invalid (@invalid) { if ( $invalid =~ $re ) { print "invalid string does match: $invalid\n"; $mismatches += 1; } } print "$re had $mismatches mismatches with the " . (0 + @valid + @invalid) . " test cases\n";