http://www.perlmonks.org?node_id=1217998


in reply to Regex to detect file name

it is easy to do with two regexes, such as:
$f =~ /^[\w\.]+$/ && $f =~ /^\w/
The first checks what the entire filename consists of, and the second checks the leading letter. There are endless variations on the same idea.

Replies are listed 'Best First'.
Re^2: Regex to detect file name
by Laurent_R (Canon) on Jul 06, 2018 at 07:40 UTC
    it is easy to do with two regexes, such as: ...
    Easy, perhaps, but wrong. The suggested two regexes would match a string starting with an underscore.
    DB<1> $f = "_foo"; DB<2> print "Success" if $f =~ /^[\w\.]+$/ && $f =~ /^\w/; Success DB<3>
    Update (at 7:50 UTC): sorry, the last sentence below is wrong, I had missed the $ at the end of the first pattern.

    It would also accept garbage characters in the middle.

Re^2: Regex to detect file name
by Anonymous Monk on Jul 05, 2018 at 21:31 UTC
    thats a waste of resources
    /^\w[\w\.]*$/
      This is not a game of Name That Tune. There are no brownie-points for doing it in one regex versus two. If it does the job, is clear, and easy to maintain, Just Do It.

        As if we needed any further proof that you don't actually know how to think like an engineer.