http://qs321.pair.com?node_id=240601
Category: Misc
Author/Contact Info sutch
Description: After over a year away from Perl (doing PHP coding), I'm happy to start using Perl again. I just put this script together to help another developer test regular expressions.

Comments are welcome.

#!/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 + @inva
+lid) . " test cases\n";