You don't specify which characters are valid as part of the identifier, so the following assumes that any letter or number is okay. From your code snippet, it looked as if you wanted to allow either upper or lower case matching as well:
my $formget = qr(10-[KQ][A-Z0-9]*(?!/))i;
while (my $form_type = <DATA>) {
if ($form_type =~ /^$formget/ ) {
print "Valid: $form_type";
} else {
print "Invalid: $form_type";
}
}
__DATA__
10-K
10-KSB
10-K405
10-ksb405
10-Q
10-K/A
10-Q/A
Output:
Valid: 10-K
Valid: 10-KSB
Valid: 10-K405
Valid: 10-ksb405
Valid: 10-Q
Invalid: 10-K/A
Invalid: 10-Q/A
Check out the section titled "Look-Around Assertions" in perlre about using the (?! ...) construct to specify what's called a negative lookahead. That is, something which must not follow the current pattern.