dt667 has asked for the wisdom of the Perl Monks concerning the following question:

I am trying to use Text::Glob to convert various glob patterns to perl regex patterns. It appears to work fine for all but this one: \[hello\] The expected output is: (?=[^\.])\[hello\] but I am getting: (?=[^\.])[hello] Is my expected outcome wrong and the module correct? I've looked at the perl module and if I add
elsif ($_ eq '[') { $regex .= $escaping ? "\\[" : $_; } elsif ($_ eq ']') { $regex .= $escaping ? "\\]" : $_; }
at line 60, my expected result is produced. Again, is my logic flawed here?

Replies are listed 'Best First'.
Re: Glob to Regex issue
by SuicideJunkie (Vicar) on Nov 18, 2015 at 15:16 UTC

    If the text in your source file is <"\\[">, then your string becomes <\[> and your regex looks for a literal <[>

    If the text in your source file is <"\[">, then your string becomes <[> and your regex sees the start of a character class.


    OR, you can use single quotes to avoid the interpolation:

    If the text in your source file is <'\\['>, then your string becomes <\\[> and your regex looks for a literal <\[>

    If the text in your source file is <'\['>, then your string becomes <\[> and your regex looks for a literal <[>


    If you are typing it as a one-liner into the command prompt, then you'll need twice as many backslashes of course.