in reply to Re: Use of uninitialized value in regexp
in thread Use of uninitialized value in regexp

Hi Athanasius,

The code now works after I move the print inside if.

My bad for missing this one. I've got one more question if you don't mind. When I put $ anchor after $word variable, I am having the same problem "Uninitialized $\ (since \t comes after $word -> $word$\t)". Could you give me a hint on how to deal with anchors that will be beside "\"?

Thank you very much!

Replies are listed 'Best First'.
Re^3: Use of uninitialized value in regexp
by AnomalousMonk (Archbishop) on Feb 10, 2015 at 01:17 UTC

    In the expression  /foo$\t/ the RE compiler takes  $\ to be the  $OUTPUT_RECORD_SEPARATOR special scalar variable (see perlvar) and interpolates its value in the regex. One way to disambiguate  $ here would be to use the  /x regex modifier (see Modifiers in perlre) to introduce whitespace around the assertion:  /foo $ \t/x. However, this is meaningless because you're asking to match a pattern that has a  \t (tab) character beyond the end of the string! There is no such string. What is your real intent with this usage of the  $ assertion?

    Update: The  /m modifier (again, Modifiers) allows the  ^ $ anchor assertions to match against embedded  \n (newline) characters in a string, but again, the expression  / $ \t /xm is unmatchable because a  $ before an embedded newline would be followed by a  \n and not a  \t character.


    Give a man a fish:  <%-(-(-(-<

      Hi Anomalous Monk,

      Thank you for enlightening me that I will not be needing $ anchor for the said scenario. :)

      And thank you also for providing me details in how to deal with Modifiers.

      Thanks and regards!