There are plenty of solutions already mentioned, but I thought I'd mention something about the code that you tried:

$a !~ s/$b/$b/;

There is no !~ when dealing with substitution, only with matching. If there was no match in a substitution, it didn't find anything to replace, and so won't do anything. You can do odd things with negative assertions, but I would assume you probably wanted to match:

$a !~ m/$b/;

But, we get into the question of 'match' ... in this case, if $a contains $b, the expression will be true. if you want to ensure that $a didn't have any extra characters, you'd want to match from the beginning of the string to the end:

$a !~ m/^$b$/;

But if $b contains any regular expression meta characters (parens, brackets, braces, asterisks, periods, question marks, etc), odd things may occur that you didn't want to happen. So, if you don't want that, you use:

$a ne $b

If you are looking for $b within $a, and there's a chance of meta characters, then you'll want to use a regex, but escape any character in $b that might not be safe.


In reply to Re: Replace $a with $b if $a ne $b by jhourcle
in thread Replace $a with $b if $a ne $b 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.