#! perl -slw use strict; my $re = qr[^\d{3}-\d{3}$]; my $pat = '111-111'; my @inputs = ( '', 'a', '1', '12', '12x', '123', '1234', '123-', '123x', '123-4', '123-x', '123-456', '123-4567' ); for my $input ( @inputs ) { print "$input failed" and next if length $input > length $pat; my $test = $input . substr( $pat, length( $input ) ); print $input, $test =~ $re ? ' passed' : ' failed'; } __END__ P:\test>471541 passed a failed 1 passed 12 passed 12x failed 123 passed 1234 failed 123- passed 123x failed 123-4 passed 123-x failed 123-456 passed 123-4567 failed