in reply to Re: Pattern matching exlusion
in thread Pattern matching exlusion

Hi BrowserUk, Question: my current pattern matching line of code looks like this: if ($form_type=~/^$formget/i); How would I incorporate the code you suggested in your post? Presumably, I would add m[10-KQ^/*$] , but I am unsure how the syntax plays out. Thank you!!

Replies are listed 'Best First'.
Re^3: Pattern matching exlusion
by AnomalousMonk (Archbishop) on Nov 29, 2014 at 15:20 UTC
    ... 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.