... m[10-KQ^/*$] ...
Huh?!? You really need to start using <code> ... </code> tags. Please see Markup in the Monastery, Writeup Formatting Tips, How do I post a question effectively?.
How would I incorporate the code [BrowserUk] suggested ...
One way would be to copy the contents of the m// given by BrowserUk into a qr// regex object as you originally had it, and then interpolate the qr// into a m// match as in your OP (I'm using \z in place of $ to match absolute end-of-string):
c:\@Work\Perl\monks>perl -wMstrict -le
"my @tests = qw[
10-K 10-KSB 10-K405 10-KSB405 10-Q
10-K/B 10-KA/ 10-KSB/ABC 10-K405/A 10-KSB405/A 10-Q/A
];
;;
my $formget = qr{ 10- [KQ] [^/]* \z }xms;
;;
print qq{'$_': }, $_ =~ m[^$formget] ? 'matches' : 'does not match' f
+or @tests;
"
'10-K': matches
'10-KSB': matches
'10-K405': matches
'10-KSB405': matches
'10-Q': matches
'10-K/B': does not match
'10-KA/': does not match
'10-KSB/ABC': does not match
'10-K405/A': does not match
'10-KSB405/A': does not match
'10-Q/A': does not match
Please see perlre, perlrequick and perlretut.
Also: What version of Perl are you working with? It may be useful to know this for future reference.
Update: I forgot about case insensitivity. You can add this with an /i modifier:
my $formget = qr{ 10- [KQ] [^/]* \z }xmsi;
or, better, IMHO, for stylistic reasons, (?i)
my $formget = qr{ (?i) 10- [KQ] [^/]* \z }xms;
or, best of all,
my $formget = qr{ 10- [KkQq] [^/]* \z }xms;
because it avoids the /i performance hit if you are processing very many strings or very long strings.
|