and along Lerg’s suggestion, you could also replace require() with one that has similar functionality (just remember to keep a reference to the original one!)
Programming in Lua (aka “PiL”) is a very worthwhile read (especially if you’d rather avoid the C source). Chapter 15, and in particular 15.5 in this context, spells out in quite a lot of detail what require() does, and interacts with package.path, and just about everything else covered here so far. Get 2nd edition though, as it best conforms for the 5.1.5 that Corona uses.
truth is, Lua doesn’t know squat about paths, nor does it care. if you want to use slashes, and your OS likes it, then it’ll work just fine and Lua won’t even know. everything that “just works” re filenames is because the OS managed to handle it “well”. lua really/truly/honestly doesn’t know anything about your OS’s filesystem except what you’ve hardcoded into it.
fe, you even have to hardcode the separators into lua_conf at build-time to get the dot-substitution to do something reasonable, cuz Lua has no idea what the proper separator is. (note that the dot-substitution ONLY happens on the module NAME, not on package.path which must contain literal OS separators – require() takes a module NAME as argument not a module path)
try building Lua for VMS (DEC VAX) - you can shove all sorts of nonsense characters into require (dollars, colons, brackets, semicolons, literal unsubstituted periods) as required by the OS to specify full paths, and it still all “just works” if what eventually makes it to the OS is a valid path. (yes, i’ve done it; yes, i’m old :D)
BUT… in an embedded environment, every one of which is unique, you are to some extent at the mercy of the embedded environment. Corona probably has a custom loader in package.loaders to handle pulling the compiled source out of the resource archive. (i say “probably”, cuz i’ve never actually checked their implementation, just assume that’s how they’d do it, tho they could have “gone deeper”, replacing require() and/or loadfile() directly, though doubt they had to)
so, if the embedded environment says something to the effect of “we persist the dot-substitution notation into our resource archive prior to substitution” then there’s really not much you can do about it (except write “wrappers” around it, as per Lerg), and i’d guess that that’s where the “just get over it” sentiment comes from, cuz it’s a big fight otherwise.
hth