weird escaping problem with StringPattern inside Module[]
- To: mathgroup at smc.vnet.net
- Subject: [mg100799] weird escaping problem with StringPattern inside Module[]
- From: divisor <congruentialuminaire at yahoo.com>
- Date: Sun, 14 Jun 2009 05:40:40 -0400 (EDT)
Hello MathGroup: I am having a strange problem where my code works fine in a Notebook session but acts strangely inside a Module[]. I presume that this is some scoping problem that is currently beyond me. I know how Module[] takes local variables and adds "$nnn" or something to the variable. It is doing a similar thing to my string pattern and I have no idea how to "escape" this and disable this behavior. Any help you can provide is greatly appreciated. This code works as expected: parseVars = {abc, def}; text0 = "the rain in spain stays mainly..."; parsePattern = "the " ~~ abc__ ~~ " in " ~~ def__ ~~ " stays main" -> parseVars; Flatten@StringCases[text0, parsePattern] > {"rain", "spain"} Print["patt=", parsePattern] > patt=the ~~abc__~~ in ~~def__~~ stays main->{abc,def} This is the module containing the exact same logic: getWeather[inputStr_String] := Module[ {parseVars, parsePattern} , parseVars = {abc, def}; parsePattern = "the " ~~ abc__ ~~ " in " ~~ def__ ~~ " stays main" - > parseVars; Print["patt=", parsePattern]; Flatten@StringCases[inputStr, parsePattern] ] This shows the symptom. Notice how the pattern vars are suffixed and hence do not match those in the rhs of StringCases[] with the result being all are "no match"!?!?! getWeather[text0] > patt=the ~~abc$__~~ in ~~def$__~~ stays main->{abc,def} > {abc, def} TIA. Regards.. Roger Williams Franklin Laboratory