I'm using File::Find to get a list of files from a base directory. I then want to find files that are in certain key directories that are kept in scalar variables. But the regular expression will not work correctly as the backslashes seem to cause funnies.

For example, the following two code examples would be expected to give the same output:-

example 1.
my $match = "\\well"; my $text = "\\well don't you know it"; $text =~ s/$match//; print "$text\n"; example 2. $text = "\\well don't you know it"; $text =~ s/\\well//; print "$text\n";

You would expect to see: don't you know it

But example 1 gives: \ don't you know it

It appears as if the regex is compiled to take the \\ to mean \ but compares against the string which keeps the original \\.

This really messes things up if you want to specify a directory structure (eg c:\\windows) for dealing with files, but then want a regex of the same value; it would have to be defines as c:\\\\windows.

Does anybody know what is going on here and is there a way around it.

Humbly

Tim


In reply to using a scalar in a regex with backslashes by Anonymous Monk

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.