I doubt, this will not work on pipes. (characters are lost?)
Indeed, if you want to strip a UTF-8 BOM from a pipe stream you need to do something else. Essentially, you'd need to add in a read ahead buffer. That's a bit more work than the 10 extra lines for ditching a file BOM.
I haven't looked in detail, but do pipe opens even go via luaL_loadfile() ?