Other than decreasing readability and maintainability of the code, I see no purpose of having it as a single regular expression.

I definitely agree. It is often much better to have several regexes is a row, for example to just get rid of all exceptions and special cases, before the regex doing the actual work, rather than trying to pack everything into a single complicated regex.

For example, suppose that you don't want to apply your substitution on file lines that start with XYZ, contain ZYX or XZY or end with YZZ. Trying to put all this in your single s/// substitution is quickly becoming a nighmare, while something like this is very clear:

while (<$IN>) { next if /^XYZ/ or /ZYX/ or /XZY/ or /YZZ$/; # removes all special + cases where substitution should not occur s/foo/bar/g; # do something with $_ }

In the case of the OP, this might be something like this:

foreach $file (@filelist) { next unless file =~ /_00001\.\w+$/; # now only start for looking for a random number to replace _0000 +1 # ... }

In reply to Re^4: Filename change with regular expression by Laurent_R
in thread Filename change with regular expression 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.