arc_of_descent has asked for the wisdom of the Perl Monks concerning the following question:


Hi,

What am i doing wrong?

$fav = 'd:\stuff'; $dir = 'd:\stuff\buff\tuff'; if ($dir =~ /^\Q$fav\\/) { print "Match!\n"; } else { print "No match!\n"; }

This prints "No match!"
Thanx
--
arc_of_descent

Replies are listed 'Best First'.
Re: backslash in regex
by JaWi (Hermit) on Feb 02, 2003 at 10:49 UTC
    The \Q disables pattern metacharacters until a \E is found, thus, if you wrote your regexp like:
    if ( $dir =~ /^\Q$fav\E\\/ ) { # Note the \E after $fav!
    It will match the stuff you want...

    Update: placed the \E at the wrong place...

    -- JaWi

    "A chicken is an egg's way of producing more eggs."

       if ( $dir =~ /^\Q$fav\\\E/ ) { # Note the \E at the end! won't work -- the problem is under \Q modifier the backslash at the end matches wrong  if ( $dir =~ /^\Q$fav\E\\/ ) { works
      --
      Jaap Karssenberg || Pardus (Larus)? <pardus@cpan.org>
      >>>> Zoidberg: So many memories, so many strange fluids gushing out of patients' bodies.... <<<<