I have a file with lines of the form

/dev/sda4 6 Fri Apr 12 04:30:02 2019 +0100   /dumpx/DUMP4X/var/level6/55    86.53 MB

and I have another file with lines of the form

/dumpx/DUMP4X/var/level6/55

and I would like to find (and remove) all the lines in the first file which contain the strings in the second file. Fortunately, I can assume that both files are sorted in the same order.

to find a single entry is simple:

if $line =~ m?/dumpx/DUMP4X/var/level6/55? then do something

but what I want to do is to read lines from the two files in a suitable loop, picking out the matches, so I need a $regexp variable

So I write

$regexp = "m?" . <STDIN> . "?";

(the second file is actually coming from a pipe)

and then I test

if $line =~ $regexp ...

and if it matches, then I do the necessary stuff, and fetch the next $line and obtain the next $regexp.

But the =~ operator has been cunningly designed so that does not work. Essentially, if the RHS of =~ is a variable (my $regexp), then there is a builtin assumption that it uses '/' delimiters which, for my case, are totally unsuitable.

So how do I do this job?


In reply to Regex variables with delimiters by clerew

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.