my $FOUR_DIGIT_CAPTURE = qr/ ( # left as an exercise ) /x; while () { if (my ($four_digit_num) = /$FOUR_DIGIT_CAPTURE/) { print # left as an exercise } else { # left as an exercise } } __DATA__ j9999120.125 Be sure to include lots of interesting test cases.